当我们已经通过各种操作getshell之后想要进行内网横向渗透,但因为目标ACL策略设置的比较严格,只允许HTTP协议和对应端口通过。我们无法通过使用端口转发或者是端口映射的方法来从外网访问到内网的其他机器。这时我们就会想到reGeorg这款工具,通过该工具代理进入内网,通过HTTP协议转发请求。
![reGeorg实战攻防 reGeorg实战攻防]()
这个工具创建之初本意并不是专门用来渗透内网,而是某些企业员工在外网的环境下想访问内网资源。所以这几个安全意识不太足的小哥们写了一个可以通过部署在边界上的网页来进行流量转发,从而访问内网的一个办公工具......
可以看到该工具的'斯搂梗'是说"每个办公室都需要这样的工具"..
![reGeorg实战攻防 reGeorg实战攻防]()
那么如此厉害的工具究竟是怎么实现的呢?我们一起来看下源码:
![reGeorg实战攻防 reGeorg实战攻防]()
从入口开始,就是标准的一套:LOGO + argparse 来进行参数的支持和解析,真正逻辑从askGeorg函数开始。这个函数是来测试远程代理服务器是否能够访问,我们来看下这个函数的具体内容:
![reGeorg实战攻防 reGeorg实战攻防]()
可以看到内容基本就是判断是否为HTTPS,然后使用哪个工具。用GET方法来请求,如果状态码为 200 且内容跟远程服务器中内容一样就认为是OK的。
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
监听了客户端的端口,并设置TCP的排队上限为1000,这样的对普通情况来说是足够了。
后边是创建循环不停的接收报文,并且将接收到的传入 session 线程中并启动。
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
内容不多,就是判断Socks4还是5并解析,之后是创建读写线程并start。
![reGeorg实战攻防 reGeorg实战攻防]()
Socks代理至少三个字节的请求,第一个字节一定为5,如果是Socks4,则第一个字节一定为4。
parseSocks5和parseSocks4 为判断对应Socks的协议解析是否成功。
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
比如在浏览器中访问可以出现熟悉的"Georg says,'All seems fine'",说明可以正常访问。但是使用reGeorgSocksProxy客户端的时候会报'未准备好,请检查url',这是为什么呢?
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
通过打印出的关键字搜索,可以看到是askGeorg这个函数返回了False 导致了退出程序。
这时我们可以进行调试,使用Debug来跟进代码,一行一行看到底哪里出错了。当不具备调试环境时也可以使用打印的方法定位问题。
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
可以看到返回的状态码为403,也就是说可能被WAF或者其他安全设备拦截掉了。我们通过代码可以获知只有当状态码为200的时候才可以正常使用,并且我们使用浏览器直接打开是可以正常访问的。也就是说我们的问题出现在了Python脚本跟浏览器的请求差异上,比如一些常见的请求头 User-Agent 、Accept-Language等,这些我们需要一一补上。
我们需要将每一个请求都加入浏览器所包含的请求头,所以我们将该过程提取出来作为函数使用。
![reGeorg实战攻防 reGeorg实战攻防]()
setupRemoteSession中的CONNECT:
![reGeorg实战攻防 reGeorg实战攻防]()
closeRemoteSession中的DISCONNECT:
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
可以看到返回码已经变为200并且打印出了熟悉的'All seems fine',说明可以正常使用了。Happy~
![reGeorg实战攻防 reGeorg实战攻防]()
掌握调试/打印等方法不论是对代码审计和修改脚本都有很大的帮助和提升。我们在实战中会碰到各种各样的问题,这时候需要自己细心耐心以及编码修改能力来解决这些问题。这样我们才可以做到在这不断提升的攻防中稳步前行。
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
![reGeorg实战攻防 reGeorg实战攻防]()
本文始发于微信公众号(黑白之道):reGeorg实战攻防
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/229564.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论