cas/login?service=\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\etc\passwd 400问题处理
时间: 2024-02-03 08:10:15 浏览: 125
cas/login?service=\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\etc\passwd 400问题是一种常见的安全漏洞问题,它涉及到对CAS(Central Authentication Service)登录服务的恶意利用。CAS是一种单点登录协议,用于在多个应用系统中进行用户身份认证和授权。
在这个问题中,恶意用户试图通过修改CAS登录服务的URL参数来获取敏感系统文件(如/etc/passwd)。这种攻击利用了路径遍历漏洞,通过在URL中添加多个".."来跳出当前目录,最终访问到系统的敏感文件。
要解决这个问题,可以采取以下措施:
1. 输入验证:对用户输入的URL参数进行严格的验证和过滤,确保不包含任何敏感字符或路径遍历符号。
2. URL编码:对URL参数进行编码,以防止恶意用户使用特殊字符来绕过输入验证。
3. 访问控制:限制CAS登录服务的访问权限,只允许授权的用户或应用程序进行访问。
4. 安全配置:确保CAS服务器和相关组件的安全配置,包括更新和修补已知的安全漏洞。
相关问题
import execjs import requests from lxml import etree def getRsa(u, p, lt): """ 加密方法 :param u:账号 :param p:密码 :param lt:lt :return:加密值 """ jsPath = r'./des.js' with open(jsPath, "r") as file: desJsCode = file.read() desJsFunction = execjs.compile(desJsCode) rsa = desJsFunction.call("strEnc", u + p + lt, "1", "2", "3") return rsa """ ---------------------------------------------------------------------------------- 第一次请求获取lt和execution的数值 """ header = { "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36' } loginUrl = """http://cas.upc.edu.cn/cas/login?service=http%3A%2F%2Fjwxt.upc.edu.cn%2Fneusoftcas.jsp""" session = requests.session() one = session.get(loginUrl) loginPageHtml = etree.HTML(one.text) lt = loginPageHtml.xpath(r'//*[@id="lt"]/@value')[0] execution = loginPageHtml.xpath(r'//*[@name="execution"]/@value')[0] u = '2009050216' p = '20020528lykLYK.' ul = len(u) pl = len(p) rsa = getRsa(u, p, lt) _eventId = "submit"
下面是相应的Dart代码实现:
```
import 'dart:io';
import 'package:http/http.dart' as http;
import 'package:html/parser.dart' show parse;
import 'package:html/dom.dart';
Future<String> getRsa(String u, String p, String lt) async {
/* 加密方法 */
File jsFile = File('./des.js');
String desJsCode = await jsFile.readAsString();
var context = await execjs.createContext(desJsCode);
String rsa = await context.callMethod("strEnc", [u + p + lt, "1", "2", "3"]);
return rsa;
}
Future<void> main() async {
/* 第一次请求获取lt和execution的数值 */
var headers = {
"User-Agent":
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'
};
var loginUrl =
"http://cas.upc.edu.cn/cas/login?service=http%3A%2F%2Fjwxt.upc.edu.cn%2Fneusoftcas.jsp";
var session = http.Client();
var response = await session.get(Uri.parse(loginUrl), headers: headers);
var document = parse(response.body);
var lt = document.querySelector('#lt')?.attributes['value'] ?? "";
var execution = document.querySelector('[name="execution"]')?.attributes['value'] ?? "";
var u = '2009050216';
var p = '20020528lykLYK.';
var rsa = await getRsa(u, p, lt);
var _eventId = "submit";
}
```
需要注意的是,由于Dart是一门静态类型语言,因此需要显式地声明变量类型。此外,Dart中没有像Python中的execjs库一样可以直接使用JavaScript代码,因此需要使用dart-js库来实现JavaScript代码的调用。
redirect:http://localhost:8080/cas/logout?service=http://localhost:8080/cas/login失效
这个问题可能是由于您的CAS服务器配置不正确或者您的服务没有正确注册在CAS服务器上。您可以尝试以下步骤来解决这个问题:
1. 检查您的CAS服务器配置是否正确。确保您的CAS服务器已经正确配置了CAS客户端的服务,并且您的服务已经被注册在CAS服务器上。
2. 检查您的服务是否正确注册在CAS服务器上。您可以在CAS服务器的管理界面上查看您的服务是否已经被正确注册,并且是否有正确的重定向URL。
3. 检查您的CAS客户端配置是否正确。检查您的CAS客户端是否正确配置了CAS服务器的URL和服务的URL,并且是否正确使用了CAS客户端的API。
如果以上步骤都没有解决您的问题,您可以参考CAS服务器的文档或者寻求CAS服务器的技术支持来解决问题。