分析拿下114LA网址导航方法

文/心灵

纯属分析 并不是漏洞 也可以叫漏洞
程序文件不多 大致能和用户交换的就是 留言本 和网址提交
2个都详细看了几次 按本小菜看来是没有使用可能性
但看完下列分析或许可能用到
现在只剩下后台可以找了
admin/index.php 必须经过这里才能使用里面的文件
所以从这里下手
经典对白 看代码 index.php

< ?
require '../init.php' ;
if ( empty ( $_GET [ 'c' ] ) || ( $_GET [ 'c' ] == 'login' and ( empty ( $_GET [ 'a' ] ) || $_GET [ 'a' ] == 'login' ) ) || $_GET [ 'c' ] == 'securimage' )
//看来只能运行login和securimage 2个 一个是登录 一个是验证码
{ }
else
{
mod_auth :: instance ( ) ; //看权限检测
session_write_close ( ) ;
}
load_controller ( ) ;
?>
看文件 mod_auth
$auth = mod_login :: instance ( ) ;
if ( ! $auth -> is_login ( ) )
{
header ( "location: ./index.php?c=login" ) ;
}
//经测试这里不能用关闭脚本方法去绕过 因为还有别的地方验证
! $auth 就是instance转过来 那段不用看了 没什么作用


主要是is_login 看下
public function is_login ( )
{
$cookie = array_var ( $_COOKIE , AUTH_KEY . '_admin_auth' ) ;
//获取COOKIE头 注AUTH_KEY为114la
if ( isset ( $cookie ) and ! empty ( $cookie ) )
//判定是否为空.....
{
$cookie_data = explode ( ':' , base64_decode ( $cookie ) ) ;
//重点 解密这段东西并变成数组 用;分开
if ( count ( $cookie_data ) == 3 )
//如果有3组数据
{
$current_cookie_auth = $cookie_data [ 1 ] ;
if ( $current_cookie_auth == $this -> ( ) )
//get_user_agent 就是
//return md5(AUTH_KEY . '_' . $_SERVER ['HTTP_USER_AGENT']);
//AUTH_KEY 是114la 然后加个_ 再加浏览器版本 然后MD5加密 这里可以自己结构了
{
$current_cookie_username = $cookie_data [ 0 ] ;
$current_cookie_password = $cookie_data [ 2 ] ;
//看到没? 账号密码是保存在COOKIES里的
if ( self :: verify_login_in ( $cookie_data [ 0 ] , $cookie_data [ 2 ] ) )
//下面就是 存在后给予管理员权限的代码 忽略不看了
//下面是 verify_login_in 检测代码
$password_md5 = md5 ( $password ) ;
$select = "select * from ylmf_admin_user where
`name`='$username' and `password`='$password_md5' "
;
if (app_db :: query ( $select ) )
//以上是自动登录代码
然后就是看114la_admin_auth 是如何加密的

看登录验证代码


if ( self :: verify_login_in ( $username , $password ) )
//$username, $password是POST提交的 全宇宙的登录方式都基本这样
{
$auth_key = self :: get_user_agent ( ) ;
//上面解析了 //get_user_agent 就是
//return md5(AUTH_KEY . '_' . $_SERVER ['HTTP_USER_AGENT']);
//AUTH_KEY 是114la 不是随机生成的
$auth_password = $password ;
$auth_username = $username ;
//上面2个不用解析了
self :: update_login ( $username ) ;
//记录登录记录
$cookie_value = base64_encode ( $auth_username . ':' . $auth_key . ':' . $auth_password ) ;
//重点...账号 + 114la +密码.....
$cookie_expire = time ( ) + 3600 ; //20分钟
//这里没用的 不用理
$cook_pre = AUTH_KEY . '_admin_auth' ;
//cookies前缀
$_COOKIE [ $cook_pre ] = $cookie_value ;
//这里也不需要理会
setcookie (AUTH_KEY . '_admin_auth' , $cookie_value , $cookie_expire , PATH_COOKIE ) ;
//写入COOKIE
return true ;
}

看来解密方式非常简单 就是explode(‘:’, base64_decode($cookie));
这样既获得管理员明文账号密码

怎么获得管理员的COOKIES? 就是提交网址功能!
在提交的主页里加一段获取COOKIES 然后记录在文件的代码就行了 这里不多说 很简单(注意:不能跨域获取!)
因为管理员必须要登录后台才能查看提交网址 所以必然只有管理员才看到你的网址并打开 并具有那个ll4la_admin_auth的COOKIES
99%的人审核网站肯定会打开看一下 还有一个就是看都不看就通过….就是白痴他祖先

注 :并不是利用XSS盗COOKIES 因为这套程序暂时没发现XSS漏洞 因为能给你使用的只有留言本和提交网址
而是引导管理员打开你的PHP网站来获得需要的COOKIES

获取管理员COOKIES 0DAY 就是社会工程学 因为提交网址收录的 必然管理员已经登录(具有条件了)才能看到 看到后必然打开你的网址才看下能否值得收录
利用方式很明显了 这需要针对性!

PS:你的网站如何获得目标网站COOKIES? 这方法很多 跨域就难了 挂马总可以把? 钓鱼可以把?

你可能感兴趣的:(职场,休闲,网址导航,114LA)