標簽歸檔:safe

com1文件不能刪除

com1不能刪除

com1是不能直接創建的,攻擊者可以利用\\.\漏洞來創建文件。
在資源管理器中不能直接刪除,刪除的時候用unc路徑即可。
如果是隱藏只讀文件,del是不能刪除的

attrib \\.\E:\***\com1.asp -s -r -h
del \\.\E:\***\com1.asp

在Windows XP新建文件、文件夾或快捷方式時,系統的保留特殊設備名:CON,PRN,LPT,COM1,COM2,COM3,COM4,NUL、AUX,……不允許直接使用,但以特殊方法使用它們作為文件名或文件夾名后又能產生新的特別功能。如用下面命令建立新文檔,不管文件類型擴展名是什么,文檔中有無內容都不能正常打開,除非使用特殊方式打開瀏覽文檔和對文檔進行操作:
copy con \\.\d:\設備名.txt (文件擴展名可以為.RTF,.XLS,DOC,.WAV,.HTML,.MP3,.RM……)
MD \\.\D:\CON 或其它設備名,可以建立起能打開但不能刪除的文件夾。
del \\.\D:\設備名.txt
RD \\.\D:\CON 或其它設備名

還有一個漏洞,是.\文件夾漏洞,很早以前我在博客中提到過,經常被病毒利用。下面就攻擊者的使用性來說這兩個漏洞的區別。

<%
set fso=server.createobject("Scripting.FileSystemObject")


'幾個特殊文件的建立和刪除方法
'asp可以創建,可以刪除
'cmd可以創建,可以刪除
'直接 創建 不可創建,不可刪除,可瀏覽目錄,不可查看文件
con = "\\.\" & Server.Mappath("con")
'fso.createfolder con
fso.deletefolder con


' .\ 漏洞
'asp可以創建,不可以刪除
'cmd可以創建,可以刪除
'直接 創建 不可創建,不可刪除,不可瀏覽目錄,不可查看文件
con = "\\.\" & Server.Mappath("abv") & "..\"
'fso.createfolder con
fso.deletefolder con
%>

這兩種方法創建的文件(后門),在瀏覽器中均能正常訪問,常常被掛馬這利用。我貓七就深受其害。
如果你在遇到CON不能刪除,PRN不能刪除,LPT不能刪除,COM1不能刪除,COM2不能刪除,COM3不能刪除,COM4不能刪除,COM5不能刪除,COM6不能刪除,COM7不能刪除,COM8不能刪除,NUL不能刪除、AUX不能刪除,……這種問題,知道怎么解決了把

HTTP-REFERER+Session,給您的CMS加道萬能鎖

在網上下載的CMS雖然是開源,作者也稱安全,但是還是有些讓人不能放心。今天閑來沒事,研究研究給我的程序加一道鎖。要做就做萬用鎖,而且什么CMS都可以使用。用Session來實現,在后臺公共引用頁面加入判斷,如果Session(“safe”)為空,跳轉到admin.asp,代碼如下:

< %if session("safe")="" then response.redirect "admin.asp"%>

然后寫一個admin.asp,將HTTP-REFERER保存到Session,如果登陸成功釋放Session,然后跳轉到HTTP-REFERER記錄的頁面,這樣即使知道我們的后臺賬號,密碼,也不能進入我們的后臺。

<!--#include file="inc/md5.asp"-->
< %
'定制服務請與我聯系
'Design By +飛貓(QQ:77068320;Mail:mqycn@126.com)
if request.querystring="Login_"&date()&"-"&replace(time(),":","-") then
%><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>安全模式登陸</title><style type="text/css">*{margin:0px;}body{margin:0px;background:#666;text-align:center}h3{background:#BBB}div{border:#CCC solid 10px;margin-left:auto;margin-right:auto;margin-top:200px;width:400px;background:#AAA;line-height:30px;}input{border:2px solid #CCC;background:#EEE;}h5 a{text-decoration:none;color:#000;}h5 a:hover{text-decoration:underline overline;}</style>
</head><div><form action="?LoginIn" method="post"><h3>使用安全模式(Use Safe-Mode)</h3>請輸入您的ADMIN_CODE:<br /><input name=AC type=password maxlength=7/>  <input type=submit value="安全ADMIN_CODE"/></form><h5>[<a href="http://www.okfdzs1868.com" target="_blank">Design Home</a>][<a href="#">Site Home</a>]</h5></div></html>
< %
	response.end
end if
 
admin_code="78C94776A5FC6724A047D802B6110F05"
if admin_code=md5(request("AC")) or session("safe_mode")="ok" then
	session("safe_mode")="ok"
	gourl=replace(session("GoUrl"),"%5F","_")
	session.contents.remove("GoUrl")
	if gourl="" then gourl="/"
	response.redirect gourl
else
	if Session("GoUrl")="" then Session("GoUrl")=Request.Servervariables("HTTP_REFERER")
	response.redirect "?Login_"&date()&"-"&replace(time(),":","-")
end if
%>

呵呵,簡單吧,測試下吧。
怎么沒有反應。試驗再三得出結論。Response.redirect直接跳轉的,不會產生HTTP-REFERER。又試驗了Javascript的Location.href,仍然不能解決問題。難道只有通過A點擊才能獲取嗎?正要在判斷頁面加入Session來保存登陸頁面的地址,忽然想起了FORM,它也可以獲取到HTTP-REFERER。
這樣簡單了,用Javascript模擬FORM提價,代碼如下:

< %if session("safe_mode")<>"ok" then response.write "<form action=""../../admin.asp"" method=""post"" id=""a""><script type=""text/javascript"">document.getElementById(""a"").submit();</script>":response.end%>
</form>

OK,問題解決

我有測試了幾種方式,發現了HTTP-REFERER的工作方式如下:
下列情況是從瀏覽器的地址欄正常取得Request.ServerVariables(“HTTP_REFERER”)的:
1.直接用<a href>
2.用Submit或<input type=image/>提交的表單(POST or GET)
3.使用Jscript提交的表單(POST or GET)

下面我們再看看Request.ServerVariables(“HTTP_REFERER”)不能正常取值的情況:
1.從收藏夾鏈接
2.單擊’主頁’或者自定義的地址
3.利用Jscript的location.href or location.replace()
4.在瀏覽器直接輸入地址
5.< %Response.Redirect%>
6.< %Response.AddHeader%>或<meta http-equiv=refresh>轉向
7.用XML加載地址

顯然,Request.ServerVariables(“HTTP_REFERER”)在多數情況下是不能正常工作的,下面我們看一個例子:
ref.asp
< %
response.write “You came from: ” & request.servervariables(“http_referer”)
%>

ref.htm
< %
Response.AddHeader “Refresh”, “10;URL=ref.asp”
%>

</meta><meta http-equiv=’refresh’ content=’10;URL=ref.asp’>

<form method=GET action=ref.asp name=getform>
<input type=submit value=’ Go there (GET) />> ‘>
<input type=image style=’cursor:hand’/>
</form><p>
看看上面的代碼會得到什么的結果.
<form method=POST action=ref.asp name=postform>
<input type=submit value=’ Go there (POST) />> ‘>
<input type=image style=’cursor:hand’/>
</form></p><p>

<a href=’ref.asp’>直接鏈接<p>

<a href=’#’ onclick=’window.location.href=”ref.asp”;return false;’>javascript location</a>

<a href=’#’onclick=’window.location.replace(“ref.asp”);return false;’>javascript replace</a>

<a href=’#’ onclick=’document.getform.submit();return false;’>javascript GET</a>

<a href=’#’ onclick=’document.postform.submit();return false;’>javascript POST </a> </p></a></p></meta></a>